Bug 468073: [codegen] generator ignores exclusions (part 1)
* Support exclusion for structural elements (ports, parts, connectors)
Change-Id: I74ac0cbddf3549edcab7b7ebceaa5bb9d78cc4b6
Signed-off-by: Ernesto Posse <eposse@gmail.com>
diff --git a/models/samples/ComputerSystem/expected_src/CMakeLists.txt b/models/samples/ComputerSystem/expected_src/CMakeLists.txt
index 3ab0986..e5fcb27 100644
--- a/models/samples/ComputerSystem/expected_src/CMakeLists.txt
+++ b/models/samples/ComputerSystem/expected_src/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Generated 2017-02-10 17:43:33
+# Generated 2017-02-16 14:58:15
cmake_minimum_required(VERSION 2.8.7)
set(TARGET TopMain)
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/.project b/models/tests/codepattern/structure/ExclusionsConnectors/.project
new file mode 100644
index 0000000..b4963ee
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>ExclusionsConnectors</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/ExclusionsConnectors.di b/models/tests/codepattern/structure/ExclusionsConnectors/ExclusionsConnectors.di
new file mode 100644
index 0000000..bf9abab
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/ExclusionsConnectors.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/ExclusionsConnectors.notation b/models/tests/codepattern/structure/ExclusionsConnectors/ExclusionsConnectors.notation
new file mode 100644
index 0000000..5a8589c
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/ExclusionsConnectors.notation
@@ -0,0 +1,692 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:configuration="http://www.eclipse.org/papyrus/infra/viewpoints/configuration" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_rn8WIPMBEeaAAeMRvdHfKg" type="CompositeStructure" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_rn89MPMBEeaAAeMRvdHfKg" type="Class_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_rn89MvMBEeaAAeMRvdHfKg" type="Class_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rn89M_MBEeaAAeMRvdHfKg" type="Class_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rn89NPMBEeaAAeMRvdHfKg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rn89NfMBEeaAAeMRvdHfKg" type="Class_StructureCompartment">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rzVt0PMBEeaAAeMRvdHfKg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rzVt0fMBEeaAAeMRvdHfKg" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_rp3owPMBEeaAAeMRvdHfKg" type="Property_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rzCy4PMBEeaAAeMRvdHfKg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rzDZ8PMBEeaAAeMRvdHfKg" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rp3owvMBEeaAAeMRvdHfKg" type="Property_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rp3ow_MBEeaAAeMRvdHfKg" type="Property_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rp3oxPMBEeaAAeMRvdHfKg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rp3oxfMBEeaAAeMRvdHfKg" type="Property_StructureCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rp3oxvMBEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rp3ox_MBEeaAAeMRvdHfKg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rqGSQPMBEeaAAeMRvdHfKg" type="StereotypeLabel">
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_rqGSQfMBEeaAAeMRvdHfKg" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rqGSQvMBEeaAAeMRvdHfKg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rqG5UPMBEeaAAeMRvdHfKg" type="StereotypeBrace">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rqG5UfMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_rqG5UvMBEeaAAeMRvdHfKg" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rqG5U_MBEeaAAeMRvdHfKg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rqG5VPMBEeaAAeMRvdHfKg" type="compartment_shape_display">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rqG5VfMBEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rqG5VvMBEeaAAeMRvdHfKg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rqIHcPMBEeaAAeMRvdHfKg" type="StereotypeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rqIHcfMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_rqIHcvMBEeaAAeMRvdHfKg" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rqIHc_MBEeaAAeMRvdHfKg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rqQqUPMBEeaAAeMRvdHfKg" type="Port_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rzDZ8fMBEeaAAeMRvdHfKg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rzDZ8vMBEeaAAeMRvdHfKg" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rqQqUvMBEeaAAeMRvdHfKg" type="Port_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rqQqU_MBEeaAAeMRvdHfKg" x="-12" y="11"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rqQqVPMBEeaAAeMRvdHfKg" type="Port_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rqQqVfMBEeaAAeMRvdHfKg" y="22"/>
+ </children>
+ <element xmi:type="uml:Port" href="ExclusionsConnectors.uml#_0bLi0PMAEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rqQqUfMBEeaAAeMRvdHfKg" x="77" y="12" width="11" height="11"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rqQqVvMBEeaAAeMRvdHfKg" type="Port_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rzDZ8_MBEeaAAeMRvdHfKg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rzDZ9PMBEeaAAeMRvdHfKg" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rqQqWPMBEeaAAeMRvdHfKg" type="Port_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rqRRYPMBEeaAAeMRvdHfKg" x="-12" y="11"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rqRRYfMBEeaAAeMRvdHfKg" type="Port_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rqRRYvMBEeaAAeMRvdHfKg" y="22"/>
+ </children>
+ <element xmi:type="uml:Port" href="ExclusionsConnectors.uml#_5oR50PMAEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rqQqV_MBEeaAAeMRvdHfKg" x="77" y="31" width="11" height="11"/>
+ </children>
+ <element xmi:type="uml:Property" href="ExclusionsConnectors.uml#_vRuVsPMAEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rp3owfMBEeaAAeMRvdHfKg" x="108" y="32" width="82" height="56"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rp4P0PMBEeaAAeMRvdHfKg" type="Property_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rzNyAPMBEeaAAeMRvdHfKg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rzNyAfMBEeaAAeMRvdHfKg" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rp4P0vMBEeaAAeMRvdHfKg" type="Property_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rp4P0_MBEeaAAeMRvdHfKg" type="Property_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rp4P1PMBEeaAAeMRvdHfKg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rp4P1fMBEeaAAeMRvdHfKg" type="Property_StructureCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rp4P1vMBEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rp4P1_MBEeaAAeMRvdHfKg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rrUaQPMBEeaAAeMRvdHfKg" type="StereotypeLabel">
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_rrUaQfMBEeaAAeMRvdHfKg" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rrUaQvMBEeaAAeMRvdHfKg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rrUaQ_MBEeaAAeMRvdHfKg" type="StereotypeBrace">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rrUaRPMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_rrUaRfMBEeaAAeMRvdHfKg" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rrUaRvMBEeaAAeMRvdHfKg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rrVBUPMBEeaAAeMRvdHfKg" type="compartment_shape_display">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rrVBUfMBEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rrVBUvMBEeaAAeMRvdHfKg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rrWPcPMBEeaAAeMRvdHfKg" type="StereotypeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rrWPcfMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_rrWPcvMBEeaAAeMRvdHfKg" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rrWPc_MBEeaAAeMRvdHfKg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rrXdkPMBEeaAAeMRvdHfKg" type="Port_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rzNyAvMBEeaAAeMRvdHfKg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rzNyA_MBEeaAAeMRvdHfKg" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rrYEoPMBEeaAAeMRvdHfKg" type="Port_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rrYEofMBEeaAAeMRvdHfKg" x="-12" y="11"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rrYEovMBEeaAAeMRvdHfKg" type="Port_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rrYEo_MBEeaAAeMRvdHfKg" y="22"/>
+ </children>
+ <element xmi:type="uml:Port" href="ExclusionsConnectors.uml#_7qSN0PMAEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rrXdkfMBEeaAAeMRvdHfKg" x="-5" y="9" width="11" height="11"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rrYEpPMBEeaAAeMRvdHfKg" type="Port_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rzNyBPMBEeaAAeMRvdHfKg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rzNyBfMBEeaAAeMRvdHfKg" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rrYEpvMBEeaAAeMRvdHfKg" type="Port_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rrYEp_MBEeaAAeMRvdHfKg" x="-12" y="11"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rrYEqPMBEeaAAeMRvdHfKg" type="Port_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rrYEqfMBEeaAAeMRvdHfKg" y="22"/>
+ </children>
+ <element xmi:type="uml:Port" href="ExclusionsConnectors.uml#_-QLSAPMAEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rrYEpfMBEeaAAeMRvdHfKg" x="-5" y="32" width="11" height="11"/>
+ </children>
+ <element xmi:type="uml:Property" href="ExclusionsConnectors.uml#_ytG3cPMAEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rp4P0fMBEeaAAeMRvdHfKg" x="298" y="32" width="83" height="56"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rqHgYPMBEeaAAeMRvdHfKg" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rqHgYfMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_rqHgY_MBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsConnectors.uml#_vRuVsPMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rqHgYvMBEeaAAeMRvdHfKg" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rq3uU_MBEeaAAeMRvdHfKg" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rq3uVPMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_rq3uVvMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_0bLi0PMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rq3uVfMBEeaAAeMRvdHfKg" x="194" y="-6"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rrHl9fMBEeaAAeMRvdHfKg" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rrHl9vMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_rrINAPMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_5oR50PMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rrHl9_MBEeaAAeMRvdHfKg" x="194" y="-6"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rrVBU_MBEeaAAeMRvdHfKg" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rrVBVPMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_rrVoYPMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsConnectors.uml#_ytG3cPMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rrVBVfMBEeaAAeMRvdHfKg" x="200"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rrfZZfMBEeaAAeMRvdHfKg" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rrfZZvMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_rrgAcPMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_7qSN0PMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rrfZZ_MBEeaAAeMRvdHfKg" x="194" y="-6"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rrpxc_MBEeaAAeMRvdHfKg" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rrpxdPMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_rrpxdvMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_-QLSAPMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rrpxdfMBEeaAAeMRvdHfKg" x="194" y="-6"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ysR7kPMBEeaAAeMRvdHfKg" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ysR7kfMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ysSioPMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Connector" href="ExclusionsConnectors.uml#_yqvqgPMBEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ysR7kvMBEeaAAeMRvdHfKg" x="100" y="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zXYuEPMBEeaAAeMRvdHfKg" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zXYuEfMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_zXYuE_MBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Connector" href="ExclusionsConnectors.uml#_zWjAkPMBEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zXYuEvMBEeaAAeMRvdHfKg" x="100" y="100"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rn89NvMBEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rn89N_MBEeaAAeMRvdHfKg" x="41" y="60" width="103" height="167"/>
+ </children>
+ <element xmi:type="uml:Class" href="ExclusionsConnectors.uml#_iftbwPMAEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rn89MfMBEeaAAeMRvdHfKg" x="40" y="40" width="500" height="172"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rpo_QPMBEeaAAeMRvdHfKg" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rpo_QfMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_rppmUPMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="ExclusionsConnectors.uml#_iftbwPMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rpo_QvMBEeaAAeMRvdHfKg" x="240" y="40"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_rn8WIfMBEeaAAeMRvdHfKg" name="diagram_compatibility_version" stringValue="1.2.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_rn8WIvMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_rn8WI_MBEeaAAeMRvdHfKg">
+ <owner xmi:type="uml:Class" href="ExclusionsConnectors.uml#_iftbwPMAEeaAAeMRvdHfKg"/>
+ <configuration xmi:type="configuration:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrusrt.umlrt.tooling.diagram.common/configuration/UMLRT.configuration#_Z79eQHcZEeSnWeKqQOfW2A"/>
+ </styles>
+ <element xmi:type="uml:Class" href="ExclusionsConnectors.uml#_iftbwPMAEeaAAeMRvdHfKg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_rppmUfMBEeaAAeMRvdHfKg" type="StereotypeCommentLink" source="_rn89MPMBEeaAAeMRvdHfKg" target="_rpo_QPMBEeaAAeMRvdHfKg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_rppmUvMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_rppmVvMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="ExclusionsConnectors.uml#_iftbwPMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rppmU_MBEeaAAeMRvdHfKg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rppmVPMBEeaAAeMRvdHfKg"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rppmVfMBEeaAAeMRvdHfKg"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_rqHgZPMBEeaAAeMRvdHfKg" type="StereotypeCommentLink" source="_rp3owPMBEeaAAeMRvdHfKg" target="_rqHgYPMBEeaAAeMRvdHfKg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_rqHgZfMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_rqHgafMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsConnectors.uml#_vRuVsPMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rqHgZvMBEeaAAeMRvdHfKg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rqHgZ_MBEeaAAeMRvdHfKg"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rqHgaPMBEeaAAeMRvdHfKg"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_rq3uV_MBEeaAAeMRvdHfKg" type="StereotypeCommentLink" source="_rqQqUPMBEeaAAeMRvdHfKg" target="_rq3uU_MBEeaAAeMRvdHfKg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_rq3uWPMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_rq4VYvMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_0bLi0PMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rq3uWfMBEeaAAeMRvdHfKg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rq4VYPMBEeaAAeMRvdHfKg"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rq4VYfMBEeaAAeMRvdHfKg"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_rrINAfMBEeaAAeMRvdHfKg" type="StereotypeCommentLink" source="_rqQqVvMBEeaAAeMRvdHfKg" target="_rrHl9fMBEeaAAeMRvdHfKg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_rrINAvMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_rrINBvMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_5oR50PMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rrINA_MBEeaAAeMRvdHfKg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rrINBPMBEeaAAeMRvdHfKg"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rrINBfMBEeaAAeMRvdHfKg"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_rrVoYfMBEeaAAeMRvdHfKg" type="StereotypeCommentLink" source="_rp4P0PMBEeaAAeMRvdHfKg" target="_rrVBU_MBEeaAAeMRvdHfKg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_rrVoYvMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_rrVoZvMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsConnectors.uml#_ytG3cPMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rrVoY_MBEeaAAeMRvdHfKg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rrVoZPMBEeaAAeMRvdHfKg"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rrVoZfMBEeaAAeMRvdHfKg"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_rrgAcfMBEeaAAeMRvdHfKg" type="StereotypeCommentLink" source="_rrXdkPMBEeaAAeMRvdHfKg" target="_rrfZZfMBEeaAAeMRvdHfKg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_rrgAcvMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_rrgAdvMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_7qSN0PMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rrgAc_MBEeaAAeMRvdHfKg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rrgAdPMBEeaAAeMRvdHfKg"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rrgAdfMBEeaAAeMRvdHfKg"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_rrpxd_MBEeaAAeMRvdHfKg" type="StereotypeCommentLink" source="_rrYEpPMBEeaAAeMRvdHfKg" target="_rrpxc_MBEeaAAeMRvdHfKg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_rrpxePMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_rrqYgvMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_-QLSAPMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rrpxefMBEeaAAeMRvdHfKg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rrqYgPMBEeaAAeMRvdHfKg"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rrqYgfMBEeaAAeMRvdHfKg"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_yrWHcPMBEeaAAeMRvdHfKg" type="Connector_Edge" source="_rqQqUPMBEeaAAeMRvdHfKg" target="_rrXdkPMBEeaAAeMRvdHfKg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_yrWugPMBEeaAAeMRvdHfKg" type="Connector_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yrWugfMBEeaAAeMRvdHfKg" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yrWugvMBEeaAAeMRvdHfKg" type="Connector_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yrWug_MBEeaAAeMRvdHfKg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_yrWHcfMBEeaAAeMRvdHfKg"/>
+ <element xmi:type="uml:Connector" href="ExclusionsConnectors.uml#_yqvqgPMBEeaAAeMRvdHfKg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yrWHcvMBEeaAAeMRvdHfKg" points="[242, 113, -643984, -643984]$[343, 118, -643984, -643984]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ysSiofMBEeaAAeMRvdHfKg" type="StereotypeCommentLink" source="_yrWHcPMBEeaAAeMRvdHfKg" target="_ysR7kPMBEeaAAeMRvdHfKg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ysSiovMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ysSipvMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Connector" href="ExclusionsConnectors.uml#_yqvqgPMBEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ysSio_MBEeaAAeMRvdHfKg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ysSipPMBEeaAAeMRvdHfKg"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ysSipfMBEeaAAeMRvdHfKg"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_zW7bEPMBEeaAAeMRvdHfKg" type="Connector_Edge" source="_rqQqVvMBEeaAAeMRvdHfKg" target="_rrYEpPMBEeaAAeMRvdHfKg">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zW7bE_MBEeaAAeMRvdHfKg" type="Connector_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zW7bFPMBEeaAAeMRvdHfKg" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zW7bFfMBEeaAAeMRvdHfKg" type="Connector_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zW7bFvMBEeaAAeMRvdHfKg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_zW7bEfMBEeaAAeMRvdHfKg"/>
+ <element xmi:type="uml:Connector" href="ExclusionsConnectors.uml#_zWjAkPMBEeaAAeMRvdHfKg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zW7bEvMBEeaAAeMRvdHfKg" points="[242, 135, -643984, -643984]$[339, 135, -643984, -643984]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zX6SgPMBEeaAAeMRvdHfKg" id="(0.0,0.45454545454545453)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_zXYuFPMBEeaAAeMRvdHfKg" type="StereotypeCommentLink" source="_zW7bEPMBEeaAAeMRvdHfKg" target="_zXYuEPMBEeaAAeMRvdHfKg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_zXYuFfMBEeaAAeMRvdHfKg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_zXZVIPMBEeaAAeMRvdHfKg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Connector" href="ExclusionsConnectors.uml#_zWjAkPMBEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zXYuFvMBEeaAAeMRvdHfKg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zXYuF_MBEeaAAeMRvdHfKg"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zXYuGPMBEeaAAeMRvdHfKg"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_jlb4MPPFEeaQpsG32gOmvg" type="CompositeStructure" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_jlcfQPPFEeaQpsG32gOmvg" type="Class_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_jlcfQvPFEeaQpsG32gOmvg" type="Class_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jlcfQ_PFEeaQpsG32gOmvg" type="Class_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jlcfRPPFEeaQpsG32gOmvg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jlcfRfPFEeaQpsG32gOmvg" type="Class_StructureCompartment">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jt0_MPPFEeaQpsG32gOmvg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jt0_MfPFEeaQpsG32gOmvg" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_jmqAMPPFEeaQpsG32gOmvg" type="Property_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jtcksPPFEeaQpsG32gOmvg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jtcksfPFEeaQpsG32gOmvg" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jmqAMvPFEeaQpsG32gOmvg" type="Property_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jmqAM_PFEeaQpsG32gOmvg" type="Property_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jmqANPPFEeaQpsG32gOmvg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jmqANfPFEeaQpsG32gOmvg" type="Property_StructureCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jmqnQPPFEeaQpsG32gOmvg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jmqnQfPFEeaQpsG32gOmvg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jnNZ0PPFEeaQpsG32gOmvg" type="StereotypeLabel">
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_jnNZ0fPFEeaQpsG32gOmvg" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jnNZ0vPFEeaQpsG32gOmvg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jnNZ0_PFEeaQpsG32gOmvg" type="StereotypeBrace">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jnNZ1PPFEeaQpsG32gOmvg"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_jnNZ1fPFEeaQpsG32gOmvg" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jnNZ1vPFEeaQpsG32gOmvg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jnOA4PPFEeaQpsG32gOmvg" type="compartment_shape_display">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jnOA4fPFEeaQpsG32gOmvg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jnOA4vPFEeaQpsG32gOmvg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jnOA4_PFEeaQpsG32gOmvg" type="StereotypeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jnOA5PPFEeaQpsG32gOmvg"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_jnOA5fPFEeaQpsG32gOmvg" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jnOA5vPFEeaQpsG32gOmvg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jnP2EPPFEeaQpsG32gOmvg" type="Port_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jtcksvPFEeaQpsG32gOmvg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jtcks_PFEeaQpsG32gOmvg" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jnP2EvPFEeaQpsG32gOmvg" type="Port_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jnP2E_PFEeaQpsG32gOmvg" x="-12" y="11"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jnP2FPPFEeaQpsG32gOmvg" type="Port_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jnP2FfPFEeaQpsG32gOmvg" x="11" y="22"/>
+ </children>
+ <element xmi:type="uml:Port" href="ExclusionsConnectors.uml#_0bLi0PMAEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jnP2EfPFEeaQpsG32gOmvg" x="77" y="12" width="11" height="11"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jnP2FvPFEeaQpsG32gOmvg" type="Port_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jtcktPPFEeaQpsG32gOmvg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jtcktfPFEeaQpsG32gOmvg" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jnP2GPPFEeaQpsG32gOmvg" type="Port_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jnP2GfPFEeaQpsG32gOmvg" x="-12" y="11"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jnP2GvPFEeaQpsG32gOmvg" type="Port_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jnP2G_PFEeaQpsG32gOmvg" y="22"/>
+ </children>
+ <element xmi:type="uml:Port" href="ExclusionsConnectors.uml#_5oR50PMAEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jnP2F_PFEeaQpsG32gOmvg" x="77" y="31" width="11" height="11"/>
+ </children>
+ <element xmi:type="uml:Property" href="ExclusionsConnectors.uml#_vRuVsPMAEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jmqAMfPFEeaQpsG32gOmvg" x="108" y="32" width="82" height="56"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jmqnQvPFEeaQpsG32gOmvg" type="Property_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jtuRgPPFEeaQpsG32gOmvg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jtuRgfPFEeaQpsG32gOmvg" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jmqnRPPFEeaQpsG32gOmvg" type="Property_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jmqnRfPFEeaQpsG32gOmvg" type="Property_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jmqnRvPFEeaQpsG32gOmvg" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jmqnR_PFEeaQpsG32gOmvg" type="Property_StructureCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jmqnSPPFEeaQpsG32gOmvg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jmqnSfPFEeaQpsG32gOmvg"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jn7ykPPFEeaQpsG32gOmvg" type="StereotypeLabel">
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_jn7ykfPFEeaQpsG32gOmvg" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jn7ykvPFEeaQpsG32gOmvg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jn7yk_PFEeaQpsG32gOmvg" type="StereotypeBrace">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jn7ylPPFEeaQpsG32gOmvg"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_jn7ylfPFEeaQpsG32gOmvg" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jn7ylvPFEeaQpsG32gOmvg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jn8ZoPPFEeaQpsG32gOmvg" type="compartment_shape_display">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jn8ZofPFEeaQpsG32gOmvg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jn8ZovPFEeaQpsG32gOmvg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jn8Zo_PFEeaQpsG32gOmvg" type="StereotypeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jn8ZpPPFEeaQpsG32gOmvg"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_jn8ZpfPFEeaQpsG32gOmvg" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jn8ZpvPFEeaQpsG32gOmvg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jn-O0PPFEeaQpsG32gOmvg" type="Port_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jtuRgvPFEeaQpsG32gOmvg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jtuRg_PFEeaQpsG32gOmvg" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jn-O0vPFEeaQpsG32gOmvg" type="Port_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jn-O0_PFEeaQpsG32gOmvg" x="-12" y="11"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jn-O1PPFEeaQpsG32gOmvg" type="Port_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jn-O1fPFEeaQpsG32gOmvg" y="22"/>
+ </children>
+ <element xmi:type="uml:Port" href="ExclusionsConnectors.uml#_7qSN0PMAEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jn-O0fPFEeaQpsG32gOmvg" x="-5" y="9" width="11" height="11"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jn-O1vPFEeaQpsG32gOmvg" type="Port_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jtuRhPPFEeaQpsG32gOmvg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jtuRhfPFEeaQpsG32gOmvg" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jn-O2PPFEeaQpsG32gOmvg" type="Port_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jn-O2fPFEeaQpsG32gOmvg" x="-12" y="11"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jn-O2vPFEeaQpsG32gOmvg" type="Port_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jn-O2_PFEeaQpsG32gOmvg" y="22"/>
+ </children>
+ <element xmi:type="uml:Port" href="ExclusionsConnectors.uml#_-QLSAPMAEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jn-O1_PFEeaQpsG32gOmvg" x="-5" y="32" width="11" height="11"/>
+ </children>
+ <element xmi:type="uml:Property" href="ExclusionsConnectors.uml#_ytG3cPMAEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jmqnQ_PFEeaQpsG32gOmvg" x="298" y="32" width="83" height="56"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jna1M_PFEeaQpsG32gOmvg" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jna1NPPFEeaQpsG32gOmvg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_jna1NvPFEeaQpsG32gOmvg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_0bLi0PMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jna1NfPFEeaQpsG32gOmvg" x="277" y="12"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jnl0UPPFEeaQpsG32gOmvg" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jnl0UfPFEeaQpsG32gOmvg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_jnl0U_PFEeaQpsG32gOmvg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_5oR50PMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jnl0UvPFEeaQpsG32gOmvg" x="277" y="31"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_joHYw_PFEeaQpsG32gOmvg" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_joHYxPPFEeaQpsG32gOmvg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_joHYxvPFEeaQpsG32gOmvg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_7qSN0PMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_joHYxfPFEeaQpsG32gOmvg" x="195" y="9"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_joRw0PPFEeaQpsG32gOmvg" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_joRw0fPFEeaQpsG32gOmvg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_joRw0_PFEeaQpsG32gOmvg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_-QLSAPMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_joRw0vPFEeaQpsG32gOmvg" x="195" y="32"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jlcfRvPFEeaQpsG32gOmvg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jlcfR_PFEeaQpsG32gOmvg" x="41" y="60" width="288" height="102"/>
+ </children>
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_lW5OwPPFEeaQpsG32gOmvg" name="papyrusrt.inherited"/>
+ <element xmi:type="uml:Class" href="ExclusionsConnectors.uml#_k3_hwPMAEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jlcfQfPFEeaQpsG32gOmvg" x="37" y="37" width="500" height="172"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jmmV0_PFEeaQpsG32gOmvg" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jmmV1PPFEeaQpsG32gOmvg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_jmm84PPFEeaQpsG32gOmvg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="ExclusionsConnectors.uml#_k3_hwPMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jmmV1fPFEeaQpsG32gOmvg" x="240" y="40"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_jlb4MfPFEeaQpsG32gOmvg" name="diagram_compatibility_version" stringValue="1.2.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_jlb4MvPFEeaQpsG32gOmvg"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_jlb4M_PFEeaQpsG32gOmvg">
+ <owner xmi:type="uml:Class" href="ExclusionsConnectors.uml#_k3_hwPMAEeaAAeMRvdHfKg"/>
+ <configuration xmi:type="configuration:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrusrt.umlrt.tooling.diagram.common/configuration/UMLRT.configuration#_Z79eQHcZEeSnWeKqQOfW2A"/>
+ </styles>
+ <element xmi:type="uml:Class" href="ExclusionsConnectors.uml#_k3_hwPMAEeaAAeMRvdHfKg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_jmm84fPFEeaQpsG32gOmvg" type="StereotypeCommentLink" source="_jlcfQPPFEeaQpsG32gOmvg" target="_jmmV0_PFEeaQpsG32gOmvg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_jmm84vPFEeaQpsG32gOmvg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_jmm85vPFEeaQpsG32gOmvg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="ExclusionsConnectors.uml#_k3_hwPMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jmm84_PFEeaQpsG32gOmvg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jmm85PPFEeaQpsG32gOmvg"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jmm85fPFEeaQpsG32gOmvg"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_jna1N_PFEeaQpsG32gOmvg" type="StereotypeCommentLink" source="_jnP2EPPFEeaQpsG32gOmvg" target="_jna1M_PFEeaQpsG32gOmvg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_jna1OPPFEeaQpsG32gOmvg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_jna1PPPFEeaQpsG32gOmvg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_0bLi0PMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jna1OfPFEeaQpsG32gOmvg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jna1OvPFEeaQpsG32gOmvg"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jna1O_PFEeaQpsG32gOmvg"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_jnl0VPPFEeaQpsG32gOmvg" type="StereotypeCommentLink" source="_jnP2FvPFEeaQpsG32gOmvg" target="_jnl0UPPFEeaQpsG32gOmvg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_jnl0VfPFEeaQpsG32gOmvg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_jnl0WfPFEeaQpsG32gOmvg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_5oR50PMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jnl0VvPFEeaQpsG32gOmvg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jnl0V_PFEeaQpsG32gOmvg"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jnl0WPPFEeaQpsG32gOmvg"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_joHYx_PFEeaQpsG32gOmvg" type="StereotypeCommentLink" source="_jn-O0PPFEeaQpsG32gOmvg" target="_joHYw_PFEeaQpsG32gOmvg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_joHYyPPFEeaQpsG32gOmvg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_joHYzPPFEeaQpsG32gOmvg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_7qSN0PMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_joHYyfPFEeaQpsG32gOmvg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_joHYyvPFEeaQpsG32gOmvg"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_joHYy_PFEeaQpsG32gOmvg"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_joRw1PPFEeaQpsG32gOmvg" type="StereotypeCommentLink" source="_jn-O1vPFEeaQpsG32gOmvg" target="_joRw0PPFEeaQpsG32gOmvg">
+ <styles xmi:type="notation:FontStyle" xmi:id="_joRw1fPFEeaQpsG32gOmvg"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_joRw2fPFEeaQpsG32gOmvg" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsConnectors.uml#_-QLSAPMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_joRw1vPFEeaQpsG32gOmvg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_joRw1_PFEeaQpsG32gOmvg"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_joRw2PPFEeaQpsG32gOmvg"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_js-qoPPFEeaQpsG32gOmvg" type="Connector_Edge" source="_jnP2EPPFEeaQpsG32gOmvg" target="_jn-O0PPFEeaQpsG32gOmvg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jvHYoPPFEeaQpsG32gOmvg" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jvHYofPFEeaQpsG32gOmvg" key="mutable" value="true"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jyn_oPPFEeaQpsG32gOmvg" key="routing" value="true"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jyomsPPFEeaQpsG32gOmvg" key="smoothness" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_js_RsPPFEeaQpsG32gOmvg" type="Connector_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_js_RsfPFEeaQpsG32gOmvg" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_js_RsvPFEeaQpsG32gOmvg" type="Connector_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_js_Rs_PFEeaQpsG32gOmvg" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_js-qofPFEeaQpsG32gOmvg"/>
+ <element xmi:type="uml:Connector" href="ExclusionsConnectors.uml#_yqvqgPMBEeaAAeMRvdHfKg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_js-qovPFEeaQpsG32gOmvg" points="[242, 113, -643984, -643984]$[343, 118, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_js_RtPPFEeaQpsG32gOmvg" id="(1.0,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_js_RtfPFEeaQpsG32gOmvg" id="(0.0,0.5000002600929954)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_UtpTkPSAEea2LN1G6nX9Ew" type="CompositeStructure" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_UtwBQPSAEea2LN1G6nX9Ew" type="Class_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Utx2cPSAEea2LN1G6nX9Ew" type="Class_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_UtydgPSAEea2LN1G6nX9Ew" type="Class_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UtydgfSAEea2LN1G6nX9Ew" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_UtydgvSAEea2LN1G6nX9Ew" type="Class_StructureCompartment">
+ <children xmi:type="notation:Shape" xmi:id="_W60VwPSAEea2LN1G6nX9Ew" type="Property_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_W61j4PSAEea2LN1G6nX9Ew" type="Property_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_W61j4fSAEea2LN1G6nX9Ew" type="Property_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_W61j4vSAEea2LN1G6nX9Ew" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_W61j4_SAEea2LN1G6nX9Ew" type="Property_StructureCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_W61j5PSAEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_W61j5fSAEea2LN1G6nX9Ew"/>
+ </children>
+ <element xmi:type="uml:Property" href="ExclusionsConnectors.uml#_W2TpMPSAEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_W60VwfSAEea2LN1G6nX9Ew" x="133" y="49"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_W7GpoPSAEea2LN1G6nX9Ew" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_W7GpofSAEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_W7Gpo_SAEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsConnectors.uml#_W2TpMPSAEea2LN1G6nX9Ew"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_W7GpovSAEea2LN1G6nX9Ew" x="272" y="52"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XzBwIPSAEea2LN1G6nX9Ew" type="Property_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XzCXMPSAEea2LN1G6nX9Ew" type="Property_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XzCXMfSAEea2LN1G6nX9Ew" type="Property_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XzCXMvSAEea2LN1G6nX9Ew" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XzCXM_SAEea2LN1G6nX9Ew" type="Property_StructureCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XzCXNPSAEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XzCXNfSAEea2LN1G6nX9Ew"/>
+ </children>
+ <element xmi:type="uml:Property" href="ExclusionsConnectors.uml#_Xy4mMPSAEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XzBwIfSAEea2LN1G6nX9Ew" x="311" y="49"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XzPLgPSAEea2LN1G6nX9Ew" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XzPLgfSAEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_XzPLg_SAEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsConnectors.uml#_Xy4mMPSAEea2LN1G6nX9Ew"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XzPLgvSAEea2LN1G6nX9Ew" x="443" y="49"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Utydg_SAEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UtydhPSAEea2LN1G6nX9Ew"/>
+ </children>
+ <element xmi:type="uml:Class" href="ExclusionsConnectors.uml#_g7uggPMAEeaAAeMRvdHfKg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UtwBQfSAEea2LN1G6nX9Ew" x="40" y="40" width="500" height="250"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Uwcv8PSAEea2LN1G6nX9Ew" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uwcv8fSAEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_UwdXAPSAEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="ExclusionsConnectors.uml#_g7uggPMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uwcv8vSAEea2LN1G6nX9Ew" x="240" y="40"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_Utp6oPSAEea2LN1G6nX9Ew" name="diagram_compatibility_version" stringValue="1.2.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Utp6ofSAEea2LN1G6nX9Ew"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_Utp6ovSAEea2LN1G6nX9Ew">
+ <owner xmi:type="uml:Class" href="ExclusionsConnectors.uml#_g7uggPMAEeaAAeMRvdHfKg"/>
+ <configuration xmi:type="configuration:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrusrt.umlrt.tooling.diagram.common/configuration/UMLRT.configuration#_Z79eQHcZEeSnWeKqQOfW2A"/>
+ </styles>
+ <element xmi:type="uml:Class" href="ExclusionsConnectors.uml#_g7uggPMAEeaAAeMRvdHfKg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_Uwd-EPSAEea2LN1G6nX9Ew" type="StereotypeCommentLink" source="_UtwBQPSAEea2LN1G6nX9Ew" target="_Uwcv8PSAEea2LN1G6nX9Ew">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Uwd-EfSAEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_UwelIvSAEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="ExclusionsConnectors.uml#_g7uggPMAEeaAAeMRvdHfKg"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Uwd-EvSAEea2LN1G6nX9Ew" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UwelIPSAEea2LN1G6nX9Ew"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UwelIfSAEea2LN1G6nX9Ew"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_W7GppPSAEea2LN1G6nX9Ew" type="StereotypeCommentLink" source="_W60VwPSAEea2LN1G6nX9Ew" target="_W7GpoPSAEea2LN1G6nX9Ew">
+ <styles xmi:type="notation:FontStyle" xmi:id="_W7GppfSAEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_W7HQsvSAEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsConnectors.uml#_W2TpMPSAEea2LN1G6nX9Ew"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_W7GppvSAEea2LN1G6nX9Ew" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_W7HQsPSAEea2LN1G6nX9Ew"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_W7HQsfSAEea2LN1G6nX9Ew"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_XzPykPSAEea2LN1G6nX9Ew" type="StereotypeCommentLink" source="_XzBwIPSAEea2LN1G6nX9Ew" target="_XzPLgPSAEea2LN1G6nX9Ew">
+ <styles xmi:type="notation:FontStyle" xmi:id="_XzPykfSAEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_XzQZoPSAEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsConnectors.uml#_Xy4mMPSAEea2LN1G6nX9Ew"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XzPykvSAEea2LN1G6nX9Ew" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XzPyk_SAEea2LN1G6nX9Ew"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XzPylPSAEea2LN1G6nX9Ew"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/ExclusionsConnectors.uml b/models/tests/codepattern/structure/ExclusionsConnectors/ExclusionsConnectors.uml
new file mode 100644
index 0000000..16c9b2c
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/ExclusionsConnectors.uml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:UMLRealTime="http://www.eclipse.org/papyrus/umlrt" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <uml:Model xmi:id="_cm5OQPMAEeaAAeMRvdHfKg" name="ExclusionsConnectors">
+ <packagedElement xmi:type="uml:Package" xmi:id="_fQS5cPMAEeaAAeMRvdHfKg" name="Protocol1">
+ <packagedElement xmi:type="uml:Collaboration" xmi:id="_fMYCwPMAEeaAAeMRvdHfKg" name="Protocol1">
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_fQo3sPMAEeaAAeMRvdHfKg" client="_fMYCwPMAEeaAAeMRvdHfKg" supplier="_fQj_MPMAEeaAAeMRvdHfKg" contract="_fQj_MPMAEeaAAeMRvdHfKg"/>
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_fQ0d4PMAEeaAAeMRvdHfKg" client="_fMYCwPMAEeaAAeMRvdHfKg" supplier="_fQxakPMAEeaAAeMRvdHfKg" contract="_fQxakPMAEeaAAeMRvdHfKg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_fQj_MPMAEeaAAeMRvdHfKg" name="Protocol1"/>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_fQsiEPMAEeaAAeMRvdHfKg" name="Protocol1~"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_fQvlYPMAEeaAAeMRvdHfKg" client="_fMYCwPMAEeaAAeMRvdHfKg" supplier="_fQsiEPMAEeaAAeMRvdHfKg"/>
+ <packagedElement xmi:type="uml:AnyReceiveEvent" xmi:id="_fQwzgPMAEeaAAeMRvdHfKg" name="*"/>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_fQxakPMAEeaAAeMRvdHfKg" name="Protocol1IO"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_fQ1sAPMAEeaAAeMRvdHfKg" client="_fMYCwPMAEeaAAeMRvdHfKg" supplier="_fQxakPMAEeaAAeMRvdHfKg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_g7uggPMAEeaAAeMRvdHfKg" name="Top" isActive="true">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_W2TpMPSAEea2LN1G6nX9Ew" name="a" visibility="protected" type="_iftbwPMAEeaAAeMRvdHfKg" isOrdered="true" aggregation="composite"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Xy4mMPSAEea2LN1G6nX9Ew" name="b" visibility="protected" type="_k3_hwPMAEeaAAeMRvdHfKg" isOrdered="true" aggregation="composite"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_iftbwPMAEeaAAeMRvdHfKg" name="A" isActive="true">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_vRuVsPMAEeaAAeMRvdHfKg" name="c" visibility="protected" type="_uJaCwPMAEeaAAeMRvdHfKg" isOrdered="true" aggregation="composite"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_ytG3cPMAEeaAAeMRvdHfKg" name="d" visibility="protected" type="_xVUlIPMAEeaAAeMRvdHfKg" isOrdered="true" aggregation="composite"/>
+ <ownedConnector xmi:type="uml:Connector" xmi:id="_yqvqgPMBEeaAAeMRvdHfKg" name="RTConnector1">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="_yq5bgPMBEeaAAeMRvdHfKg" partWithPort="_vRuVsPMAEeaAAeMRvdHfKg" role="_0bLi0PMAEeaAAeMRvdHfKg"/>
+ <end xmi:type="uml:ConnectorEnd" xmi:id="_yq6poPMBEeaAAeMRvdHfKg" partWithPort="_ytG3cPMAEeaAAeMRvdHfKg" role="_7qSN0PMAEeaAAeMRvdHfKg"/>
+ </ownedConnector>
+ <ownedConnector xmi:type="uml:Connector" xmi:id="_zWjAkPMBEeaAAeMRvdHfKg" name="RTConnector2">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="_zWkOsPMBEeaAAeMRvdHfKg" partWithPort="_vRuVsPMAEeaAAeMRvdHfKg" role="_5oR50PMAEeaAAeMRvdHfKg"/>
+ <end xmi:type="uml:ConnectorEnd" xmi:id="_zWk1wPMBEeaAAeMRvdHfKg" partWithPort="_ytG3cPMAEeaAAeMRvdHfKg" role="_-QLSAPMAEeaAAeMRvdHfKg"/>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_k3_hwPMAEeaAAeMRvdHfKg" name="B" isActive="true">
+ <generalization xmi:type="uml:Generalization" xmi:id="_q_jV4PMAEeaAAeMRvdHfKg" general="_iftbwPMAEeaAAeMRvdHfKg"/>
+ <ownedConnector xmi:type="uml:Connector" xmi:id="_zWlc0PMBEeaAAeMRvdHfKg" redefinedConnector="_zWjAkPMBEeaAAeMRvdHfKg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_uJaCwPMAEeaAAeMRvdHfKg" name="C" isActive="true">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_0bLi0PMAEeaAAeMRvdHfKg" name="p" visibility="public" type="_fMYCwPMAEeaAAeMRvdHfKg" isOrdered="true" aggregation="composite" isBehavior="true" isService="true"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_5oR50PMAEeaAAeMRvdHfKg" name="q" visibility="public" type="_fMYCwPMAEeaAAeMRvdHfKg" isOrdered="true" aggregation="composite" isBehavior="true" isService="true"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_xVUlIPMAEeaAAeMRvdHfKg" name="D" isActive="true">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_7qSN0PMAEeaAAeMRvdHfKg" name="p" visibility="public" type="_fMYCwPMAEeaAAeMRvdHfKg" isOrdered="true" aggregation="composite" isBehavior="true" isConjugated="true" isService="true"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_-QLSAPMAEeaAAeMRvdHfKg" name="q" visibility="public" type="_fMYCwPMAEeaAAeMRvdHfKg" isOrdered="true" aggregation="composite" isBehavior="true" isConjugated="true" isService="true"/>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_cnj8oPMAEeaAAeMRvdHfKg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cnlx0PMAEeaAAeMRvdHfKg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/umlrt#/"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_1h74oEeVEeO0lv5O1DTHOQ"/>
+ </profileApplication>
+ </uml:Model>
+ <UMLRealTime:ProtocolContainer xmi:id="_fQWj0PMAEeaAAeMRvdHfKg" base_Package="_fQS5cPMAEeaAAeMRvdHfKg"/>
+ <UMLRealTime:RTMessageSet xmi:id="_fQmbcPMAEeaAAeMRvdHfKg" base_Interface="_fQj_MPMAEeaAAeMRvdHfKg"/>
+ <UMLRealTime:RTMessageSet xmi:id="_fQuXQPMAEeaAAeMRvdHfKg" base_Interface="_fQsiEPMAEeaAAeMRvdHfKg" rtMsgKind="out"/>
+ <UMLRealTime:RTMessageSet xmi:id="_fQyosPMAEeaAAeMRvdHfKg" base_Interface="_fQxakPMAEeaAAeMRvdHfKg" rtMsgKind="inOut"/>
+ <UMLRealTime:Protocol xmi:id="_fQ2TEPMAEeaAAeMRvdHfKg" base_Collaboration="_fMYCwPMAEeaAAeMRvdHfKg"/>
+ <UMLRealTime:Capsule xmi:id="_g8hKsPMAEeaAAeMRvdHfKg" base_Class="_g7uggPMAEeaAAeMRvdHfKg"/>
+ <UMLRealTime:Capsule xmi:id="_if_voPMAEeaAAeMRvdHfKg" base_Class="_iftbwPMAEeaAAeMRvdHfKg"/>
+ <UMLRealTime:Capsule xmi:id="_k4MWEPMAEeaAAeMRvdHfKg" base_Class="_k3_hwPMAEeaAAeMRvdHfKg"/>
+ <UMLRealTime:Capsule xmi:id="_uJlo8PMAEeaAAeMRvdHfKg" base_Class="_uJaCwPMAEeaAAeMRvdHfKg"/>
+ <UMLRealTime:CapsulePart xmi:id="_vSLosPMAEeaAAeMRvdHfKg" base_Property="_vRuVsPMAEeaAAeMRvdHfKg"/>
+ <UMLRealTime:Capsule xmi:id="_xVj1sPMAEeaAAeMRvdHfKg" base_Class="_xVUlIPMAEeaAAeMRvdHfKg"/>
+ <UMLRealTime:CapsulePart xmi:id="_ytJTsPMAEeaAAeMRvdHfKg" base_Property="_ytG3cPMAEeaAAeMRvdHfKg"/>
+ <UMLRealTime:RTPort xmi:id="_0bVT0PMAEeaAAeMRvdHfKg" isPublish="false" isWired="true" base_Port="_0bLi0PMAEeaAAeMRvdHfKg"/>
+ <UMLRealTime:RTPort xmi:id="_5oTvAPMAEeaAAeMRvdHfKg" isPublish="false" isWired="true" base_Port="_5oR50PMAEeaAAeMRvdHfKg"/>
+ <UMLRealTime:RTPort xmi:id="_7qUDAPMAEeaAAeMRvdHfKg" isPublish="false" isWired="true" base_Port="_7qSN0PMAEeaAAeMRvdHfKg"/>
+ <UMLRealTime:RTPort xmi:id="_-QNuQPMAEeaAAeMRvdHfKg" isPublish="false" isWired="true" base_Port="_-QLSAPMAEeaAAeMRvdHfKg"/>
+ <UMLRealTime:RTConnector xmi:id="_yq73wPMBEeaAAeMRvdHfKg" base_Connector="_yqvqgPMBEeaAAeMRvdHfKg"/>
+ <UMLRealTime:RTConnector xmi:id="_zWk1wfMBEeaAAeMRvdHfKg" base_Connector="_zWjAkPMBEeaAAeMRvdHfKg"/>
+ <UMLRealTime:RTConnector xmi:id="_zWmq8PMBEeaAAeMRvdHfKg" base_Connector="_zWlc0PMBEeaAAeMRvdHfKg"/>
+ <UMLRealTime:RTRedefinedElement xmi:id="_1iD14PMBEeaAAeMRvdHfKg" base_RedefinableElement="_zWlc0PMBEeaAAeMRvdHfKg"/>
+ <UMLRealTime:CapsulePart xmi:id="_W2nyQPSAEea2LN1G6nX9Ew" base_Property="_W2TpMPSAEea2LN1G6nX9Ew"/>
+ <UMLRealTime:CapsulePart xmi:id="_Xy8QkPSAEea2LN1G6nX9Ew" base_Property="_Xy4mMPSAEea2LN1G6nX9Ew"/>
+</xmi:XMI>
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/A.cc b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/A.cc
new file mode 100644
index 0000000..4ea0c54
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/A.cc
@@ -0,0 +1,83 @@
+
+#include "A.hh"
+
+#include "C.hh"
+#include "D.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcapsulepart.hh"
+#include "umlrtslot.hh"
+#include <cstddef>
+#include "umlrtcapsulerole.hh"
+#include "umlrtcommsport.hh"
+#include "umlrtframeservice.hh"
+class UMLRTRtsInterface;
+
+Capsule_A::Capsule_A( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat )
+: UMLRTCapsule( NULL, cd, st, border, internal, isStat )
+, c( &slot->parts[part_c] )
+, d( &slot->parts[part_d] )
+{
+}
+
+
+
+
+void Capsule_A::bindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_A::unbindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_A::initialize( const UMLRTMessage & msg )
+{
+}
+
+void Capsule_A::inject( const UMLRTMessage & msg )
+{
+}
+
+
+static const UMLRTCapsuleRole roles[] =
+{
+ {
+ "c",
+ &C,
+ 1,
+ 1,
+ false,
+ false
+ },
+ {
+ "d",
+ &D,
+ 1,
+ 1,
+ false,
+ false
+ }
+};
+
+static void instantiate_A( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts )
+{
+ UMLRTFrameService::connectPorts( &slot->parts[Capsule_A::part_c].slots[0]->ports[Capsule_C::borderport_p], 0, &slot->parts[Capsule_A::part_d].slots[0]->ports[Capsule_D::borderport_p], 0 );
+ UMLRTFrameService::connectPorts( &slot->parts[Capsule_A::part_c].slots[0]->ports[Capsule_C::borderport_q], 0, &slot->parts[Capsule_A::part_d].slots[0]->ports[Capsule_D::borderport_q], 0 );
+ C.instantiate( NULL, slot->parts[Capsule_A::part_c].slots[0], UMLRTFrameService::createBorderPorts( slot->parts[Capsule_A::part_c].slots[0], C.numPortRolesBorder ) );
+ D.instantiate( NULL, slot->parts[Capsule_A::part_d].slots[0], UMLRTFrameService::createBorderPorts( slot->parts[Capsule_A::part_d].slots[0], D.numPortRolesBorder ) );
+ slot->capsule = new Capsule_A( &A, slot, borderPorts, NULL, false );
+}
+
+const UMLRTCapsuleClass A =
+{
+ "A",
+ NULL,
+ instantiate_A,
+ 2,
+ roles,
+ 0,
+ NULL,
+ 0,
+ NULL
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/A.hh b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/A.hh
new file mode 100644
index 0000000..0cbecf6
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/A.hh
@@ -0,0 +1,33 @@
+
+#ifndef A_HH
+#define A_HH
+
+#include "umlrtcapsule.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtmessage.hh"
+struct UMLRTCapsulePart;
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+class Capsule_A : public UMLRTCapsule
+{
+public:
+ Capsule_A( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat );
+ enum PartId
+ {
+ part_c,
+ part_d
+ };
+protected:
+ const UMLRTCapsulePart * const c;
+ const UMLRTCapsulePart * const d;
+public:
+ virtual void bindPort( bool isBorder, int portId, int index );
+ virtual void unbindPort( bool isBorder, int portId, int index );
+ virtual void initialize( const UMLRTMessage & msg );
+ virtual void inject( const UMLRTMessage & msg );
+};
+extern const UMLRTCapsuleClass A;
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/B.cc b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/B.cc
new file mode 100644
index 0000000..aa94206
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/B.cc
@@ -0,0 +1,83 @@
+
+#include "B.hh"
+
+#include "A.hh"
+#include "C.hh"
+#include "D.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcapsulepart.hh"
+#include "umlrtcapsulerole.hh"
+#include "umlrtcommsport.hh"
+#include "umlrtframeservice.hh"
+#include "umlrtslot.hh"
+#include <cstddef>
+class UMLRTRtsInterface;
+
+Capsule_B::Capsule_B( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat )
+: Capsule_A( cd, st, border, internal, isStat )
+, c( &slot->parts[part_c] )
+, d( &slot->parts[part_d] )
+{
+}
+
+
+
+
+void Capsule_B::bindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_B::unbindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_B::initialize( const UMLRTMessage & msg )
+{
+}
+
+void Capsule_B::inject( const UMLRTMessage & msg )
+{
+}
+
+
+static const UMLRTCapsuleRole roles[] =
+{
+ {
+ "c",
+ &C,
+ 1,
+ 1,
+ false,
+ false
+ },
+ {
+ "d",
+ &D,
+ 1,
+ 1,
+ false,
+ false
+ }
+};
+
+static void instantiate_B( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts )
+{
+ UMLRTFrameService::connectPorts( &slot->parts[Capsule_B::part_c].slots[0]->ports[Capsule_C::borderport_p], 0, &slot->parts[Capsule_B::part_d].slots[0]->ports[Capsule_D::borderport_p], 0 );
+ C.instantiate( NULL, slot->parts[Capsule_B::part_c].slots[0], UMLRTFrameService::createBorderPorts( slot->parts[Capsule_B::part_c].slots[0], C.numPortRolesBorder ) );
+ D.instantiate( NULL, slot->parts[Capsule_B::part_d].slots[0], UMLRTFrameService::createBorderPorts( slot->parts[Capsule_B::part_d].slots[0], D.numPortRolesBorder ) );
+ slot->capsule = new Capsule_B( &B, slot, borderPorts, NULL, false );
+}
+
+const UMLRTCapsuleClass B =
+{
+ "B",
+ &A,
+ instantiate_B,
+ 2,
+ roles,
+ 0,
+ NULL,
+ 0,
+ NULL
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/B.hh b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/B.hh
new file mode 100644
index 0000000..25833f8
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/B.hh
@@ -0,0 +1,33 @@
+
+#ifndef B_HH
+#define B_HH
+
+#include "A.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtmessage.hh"
+struct UMLRTCapsulePart;
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+class Capsule_B : public Capsule_A
+{
+public:
+ Capsule_B( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat );
+ enum PartId
+ {
+ part_c,
+ part_d
+ };
+protected:
+ const UMLRTCapsulePart * const c;
+ const UMLRTCapsulePart * const d;
+public:
+ virtual void bindPort( bool isBorder, int portId, int index );
+ virtual void unbindPort( bool isBorder, int portId, int index );
+ virtual void initialize( const UMLRTMessage & msg );
+ virtual void inject( const UMLRTMessage & msg );
+};
+extern const UMLRTCapsuleClass B;
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/C.cc b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/C.cc
new file mode 100644
index 0000000..37b4aff
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/C.cc
@@ -0,0 +1,112 @@
+
+#include "C.hh"
+
+#include <cstddef>
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcommsportrole.hh"
+#include "umlrtframeservice.hh"
+#include "umlrtslot.hh"
+class UMLRTRtsInterface;
+struct UMLRTCommsPort;
+
+Capsule_C::Capsule_C( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat )
+: UMLRTCapsule( NULL, cd, st, border, internal, isStat )
+, p( borderPorts[borderport_p] )
+, q( borderPorts[borderport_q] )
+{
+}
+
+
+
+
+
+
+void Capsule_C::bindPort( bool isBorder, int portId, int index )
+{
+ if( isBorder )
+ switch( portId )
+ {
+ case borderport_p:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_p, index, true );
+ break;
+ case borderport_q:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_q, index, true );
+ break;
+ }
+}
+
+void Capsule_C::unbindPort( bool isBorder, int portId, int index )
+{
+ if( isBorder )
+ switch( portId )
+ {
+ case borderport_p:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_p, index, false );
+ UMLRTFrameService::disconnectPort( borderPorts[borderport_p], index );
+ break;
+ case borderport_q:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_q, index, false );
+ UMLRTFrameService::disconnectPort( borderPorts[borderport_q], index );
+ break;
+ }
+}
+
+void Capsule_C::initialize( const UMLRTMessage & msg )
+{
+}
+
+void Capsule_C::inject( const UMLRTMessage & msg )
+{
+}
+
+
+static const UMLRTCommsPortRole portroles_border[] =
+{
+ {
+ Capsule_C::port_p,
+ "Protocol1",
+ "p",
+ "",
+ 1,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ },
+ {
+ Capsule_C::port_q,
+ "Protocol1",
+ "q",
+ "",
+ 1,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ }
+};
+
+static void instantiate_C( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts )
+{
+ slot->capsule = new Capsule_C( &C, slot, borderPorts, NULL, false );
+}
+
+const UMLRTCapsuleClass C =
+{
+ "C",
+ NULL,
+ instantiate_C,
+ 0,
+ NULL,
+ 2,
+ portroles_border,
+ 0,
+ NULL
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/C.hh b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/C.hh
new file mode 100644
index 0000000..912858c
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/C.hh
@@ -0,0 +1,43 @@
+
+#ifndef C_HH
+#define C_HH
+
+#include "Protocol1.hh"
+#include "umlrtcapsule.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtmessage.hh"
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+class Capsule_C : public UMLRTCapsule
+{
+public:
+ Capsule_C( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat );
+protected:
+ Protocol1::Base p;
+public:
+ enum BorderPortId
+ {
+ borderport_p,
+ borderport_q
+ };
+protected:
+ Protocol1::Base q;
+public:
+ enum PartId
+ {
+ };
+ enum PortId
+ {
+ port_p,
+ port_q
+ };
+ virtual void bindPort( bool isBorder, int portId, int index );
+ virtual void unbindPort( bool isBorder, int portId, int index );
+ virtual void initialize( const UMLRTMessage & msg );
+ virtual void inject( const UMLRTMessage & msg );
+};
+extern const UMLRTCapsuleClass C;
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/CMakeLists.txt b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/CMakeLists.txt
new file mode 100644
index 0000000..85aa846
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/CMakeLists.txt
@@ -0,0 +1,36 @@
+# Generated 2017-02-16 14:45:13
+
+cmake_minimum_required(VERSION 2.8.7)
+set(TARGET TopMain)
+project(${TARGET})
+
+# require location of supporting RTS
+if (NOT UMLRTS_ROOT)
+ if (DEFINED ENV{UMLRTS_ROOT})
+ set(UMLRTS_ROOT $ENV{UMLRTS_ROOT})
+ else ()
+ set(UMLRTS_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/umlrt.rts)
+ endif ()
+endif ()
+
+# setup primary envars - provides tooling config
+include(${UMLRTS_ROOT}/build/buildenv.cmake)
+
+# model sources
+set(SRCS TopMain.cc Protocol1.cc C.cc D.cc A.cc B.cc Top.cc TopControllers.cc )
+
+# specify target
+add_executable(${TARGET} ${SRCS})
+
+# setup lib dependency support after defining TARGET
+include(${UMLRTS_ROOT}/build/rtslib.cmake)
+
+# compiler parameters
+set_target_properties(${TARGET} PROPERTIES COMPILE_OPTIONS "${COPTS}")
+set_target_properties(${TARGET} PROPERTIES COMPILE_DEFINITIONS "${CDEFS}")
+include_directories(${INCS})
+
+# linker parameters
+set_target_properties(${TARGET} PROPERTIES CMAKE_EXE_LINKER_FLAGS "${LOPTS}")
+target_link_libraries(${TARGET} ${LIBS})
+
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/D.cc b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/D.cc
new file mode 100644
index 0000000..6015641
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/D.cc
@@ -0,0 +1,112 @@
+
+#include "D.hh"
+
+#include <cstddef>
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcommsportrole.hh"
+#include "umlrtframeservice.hh"
+#include "umlrtslot.hh"
+class UMLRTRtsInterface;
+struct UMLRTCommsPort;
+
+Capsule_D::Capsule_D( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat )
+: UMLRTCapsule( NULL, cd, st, border, internal, isStat )
+, p( borderPorts[borderport_p] )
+, q( borderPorts[borderport_q] )
+{
+}
+
+
+
+
+
+
+void Capsule_D::bindPort( bool isBorder, int portId, int index )
+{
+ if( isBorder )
+ switch( portId )
+ {
+ case borderport_p:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_p, index, true );
+ break;
+ case borderport_q:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_q, index, true );
+ break;
+ }
+}
+
+void Capsule_D::unbindPort( bool isBorder, int portId, int index )
+{
+ if( isBorder )
+ switch( portId )
+ {
+ case borderport_p:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_p, index, false );
+ UMLRTFrameService::disconnectPort( borderPorts[borderport_p], index );
+ break;
+ case borderport_q:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_q, index, false );
+ UMLRTFrameService::disconnectPort( borderPorts[borderport_q], index );
+ break;
+ }
+}
+
+void Capsule_D::initialize( const UMLRTMessage & msg )
+{
+}
+
+void Capsule_D::inject( const UMLRTMessage & msg )
+{
+}
+
+
+static const UMLRTCommsPortRole portroles_border[] =
+{
+ {
+ Capsule_D::port_p,
+ "Protocol1",
+ "p",
+ "",
+ 1,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ true
+ },
+ {
+ Capsule_D::port_q,
+ "Protocol1",
+ "q",
+ "",
+ 1,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ true
+ }
+};
+
+static void instantiate_D( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts )
+{
+ slot->capsule = new Capsule_D( &D, slot, borderPorts, NULL, false );
+}
+
+const UMLRTCapsuleClass D =
+{
+ "D",
+ NULL,
+ instantiate_D,
+ 0,
+ NULL,
+ 2,
+ portroles_border,
+ 0,
+ NULL
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/D.hh b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/D.hh
new file mode 100644
index 0000000..ed41cf1
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/D.hh
@@ -0,0 +1,43 @@
+
+#ifndef D_HH
+#define D_HH
+
+#include "Protocol1.hh"
+#include "umlrtcapsule.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtmessage.hh"
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+class Capsule_D : public UMLRTCapsule
+{
+public:
+ Capsule_D( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat );
+protected:
+ Protocol1::Conj p;
+public:
+ enum BorderPortId
+ {
+ borderport_p,
+ borderport_q
+ };
+protected:
+ Protocol1::Conj q;
+public:
+ enum PartId
+ {
+ };
+ enum PortId
+ {
+ port_p,
+ port_q
+ };
+ virtual void bindPort( bool isBorder, int portId, int index );
+ virtual void unbindPort( bool isBorder, int portId, int index );
+ virtual void initialize( const UMLRTMessage & msg );
+ virtual void inject( const UMLRTMessage & msg );
+};
+extern const UMLRTCapsuleClass D;
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Makefile b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Makefile
new file mode 100644
index 0000000..0bcbd22
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Makefile
@@ -0,0 +1,11 @@
+##################################################
+# Default makefile
+# Redirect make to target makefile
+##################################################
+
+all:
+ make -f MakefileTop.mk all
+clean:
+ make -f MakefileTop.mk clean
+.PHONY:
+ make -f MakefileTop.mk all clean
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/MakefileTop.mk b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/MakefileTop.mk
new file mode 100644
index 0000000..a3072f1
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/MakefileTop.mk
@@ -0,0 +1,49 @@
+# set default value for TARGETOS if is it not defined
+ifeq ($(TARGETOS), )
+$(warning warning: TARGETOS not defined. Choosing linux)
+TARGETOS=linux
+endif
+
+# set default value for BUILDTOOLS if is it not defined
+ifeq ($(BUILDTOOLS), )
+$(warning warning: BUILDTOOLS not defined. Choosing x86-gcc-4.6.3)
+BUILDTOOLS=x86-gcc-4.6.3
+endif
+
+# Location of RTS root.
+UMLRTS_ROOT ?= ./umlrt.rts
+
+CONFIG=$(TARGETOS).$(BUILDTOOLS)
+
+# Destination directory for the RTS services library.
+LIBDEST=$(UMLRTS_ROOT)/lib/$(CONFIG)
+
+include $(UMLRTS_ROOT)/build/host/host.mk
+include $(UMLRTS_ROOT)/build/buildtools/$(BUILDTOOLS)/buildtools.mk
+
+LD_PATHS=$(LIBDEST)
+CC_INCLUDES+=$(UMLRTS_ROOT)/include
+
+CC_DEFINES:=$(foreach d, $(CC_DEFINES), $(CC_DEF)$d)
+CC_INCLUDES:=$(foreach i, $(CC_INCLUDES), $(CC_INC)$i)
+LD_LIBS:=$(foreach i, $(LD_LIBS), $(LD_LIB)$i)
+LD_PATHS:=$(foreach i, $(LD_PATHS), $(LD_LIBPATH)$i)
+
+SRCS = TopMain.cc Protocol1.cc C.cc D.cc A.cc B.cc Top.cc TopControllers.cc
+OBJS = $(subst $(CC_EXT),$(OBJ_EXT),$(SRCS))
+
+MAIN = TopMain$(EXE_EXT)
+
+all: $(MAIN)
+
+$(MAIN): $(OBJS) $(UMLRTS_ROOT)/lib/$(CONFIG)/$(LIB_PRFX)rts$(LIB_EXT)
+ $(LD) $(LD_FLAGS) $(OBJS) $(LD_PATHS) $(LD_LIBS) $(LD_OUT)$@
+
+%$(OBJ_EXT) : %$(CC_EXT)
+ $(CC) $< $(CC_FLAGS) $(CC_DEFINES) $(CC_INCLUDES) $(CC_OUT)$@
+
+clean :
+ @echo $(RM) main$(EXE_EXT) *$(OBJ_EXT) *$(DEP_EXT) $(DBG_FILES)
+ @$(RM) main$(EXE_EXT) *$(OBJ_EXT) *$(DEP_EXT) $(DBG_FILES)
+
+.PHONY: all clean
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Protocol1.cc b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Protocol1.cc
new file mode 100644
index 0000000..08595db
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Protocol1.cc
@@ -0,0 +1,16 @@
+
+#include "Protocol1.hh"
+
+struct UMLRTCommsPort;
+
+Protocol1::Base::Base( const UMLRTCommsPort * & srcPort )
+: UMLRTProtocol( srcPort )
+{
+}
+
+Protocol1::Conj::Conj( const UMLRTCommsPort * & srcPort )
+: UMLRTProtocol( srcPort )
+{
+}
+
+
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Protocol1.hh b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Protocol1.hh
new file mode 100644
index 0000000..f917c8f
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Protocol1.hh
@@ -0,0 +1,23 @@
+
+#ifndef PROTOCOL1_HH
+#define PROTOCOL1_HH
+
+#include "umlrtprotocol.hh"
+struct UMLRTCommsPort;
+
+namespace Protocol1
+{
+ class Base : public UMLRTProtocol
+ {
+ public:
+ Base( const UMLRTCommsPort * & srcPort );
+ };
+ class Conj : public UMLRTProtocol
+ {
+ public:
+ Conj( const UMLRTCommsPort * & srcPort );
+ };
+};
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Top-connections.log b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Top-connections.log
new file mode 100644
index 0000000..71331a2
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Top-connections.log
@@ -0,0 +1,6 @@
+Top.a.RTConnector1
+ Top.a.c#p.far[0] <-> Top.a.d#p.far[0]
+Top.a.RTConnector2
+ Top.a.c#q.far[0] <-> Top.a.d#q.far[0]
+Top.b.RTConnector1
+ Top.b.c#p.far[0] <-> Top.b.d#p.far[0]
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Top.cc b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Top.cc
new file mode 100644
index 0000000..ce5dcb2
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Top.cc
@@ -0,0 +1,81 @@
+
+#include "Top.hh"
+
+#include "A.hh"
+#include "B.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcapsulepart.hh"
+#include "umlrtslot.hh"
+#include <cstddef>
+#include "umlrtcapsulerole.hh"
+#include "umlrtframeservice.hh"
+class UMLRTRtsInterface;
+struct UMLRTCommsPort;
+
+Capsule_Top::Capsule_Top( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat )
+: UMLRTCapsule( NULL, cd, st, border, internal, isStat )
+, a( &slot->parts[part_a] )
+, b( &slot->parts[part_b] )
+{
+}
+
+
+
+
+void Capsule_Top::bindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_Top::unbindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_Top::initialize( const UMLRTMessage & msg )
+{
+}
+
+void Capsule_Top::inject( const UMLRTMessage & msg )
+{
+}
+
+
+static const UMLRTCapsuleRole roles[] =
+{
+ {
+ "a",
+ &A,
+ 1,
+ 1,
+ false,
+ false
+ },
+ {
+ "b",
+ &B,
+ 1,
+ 1,
+ false,
+ false
+ }
+};
+
+static void instantiate_Top( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts )
+{
+ A.instantiate( NULL, slot->parts[Capsule_Top::part_a].slots[0], UMLRTFrameService::createBorderPorts( slot->parts[Capsule_Top::part_a].slots[0], A.numPortRolesBorder ) );
+ B.instantiate( NULL, slot->parts[Capsule_Top::part_b].slots[0], UMLRTFrameService::createBorderPorts( slot->parts[Capsule_Top::part_b].slots[0], B.numPortRolesBorder ) );
+ slot->capsule = new Capsule_Top( &Top, slot, borderPorts, NULL, false );
+}
+
+const UMLRTCapsuleClass Top =
+{
+ "Top",
+ NULL,
+ instantiate_Top,
+ 2,
+ roles,
+ 0,
+ NULL,
+ 0,
+ NULL
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Top.hh b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Top.hh
new file mode 100644
index 0000000..2c5910f
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/Top.hh
@@ -0,0 +1,33 @@
+
+#ifndef TOP_HH
+#define TOP_HH
+
+#include "umlrtcapsule.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtmessage.hh"
+struct UMLRTCapsulePart;
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+class Capsule_Top : public UMLRTCapsule
+{
+public:
+ Capsule_Top( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat );
+ enum PartId
+ {
+ part_a,
+ part_b
+ };
+protected:
+ const UMLRTCapsulePart * const a;
+ const UMLRTCapsulePart * const b;
+public:
+ virtual void bindPort( bool isBorder, int portId, int index );
+ virtual void unbindPort( bool isBorder, int portId, int index );
+ virtual void initialize( const UMLRTMessage & msg );
+ virtual void inject( const UMLRTMessage & msg );
+};
+extern const UMLRTCapsuleClass Top;
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/TopControllers.cc b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/TopControllers.cc
new file mode 100644
index 0000000..93fef48
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/TopControllers.cc
@@ -0,0 +1,473 @@
+
+#include "TopControllers.hh"
+
+#include "A.hh"
+#include "B.hh"
+#include "C.hh"
+#include "D.hh"
+#include "Top.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcapsulepart.hh"
+#include "umlrtcommsport.hh"
+#include "umlrtcommsportfarend.hh"
+#include "umlrtcontroller.hh"
+#include "umlrtslot.hh"
+#include <cstddef>
+
+
+static UMLRTController DefaultController_( "DefaultController" );
+
+UMLRTController * DefaultController = &DefaultController_;
+
+static Capsule_Top top( &Top, &Top_slots[InstId_Top], NULL, NULL, true );
+
+static UMLRTSlot * slots_Top[] =
+{
+ &Top_slots[InstId_Top_a],
+ &Top_slots[InstId_Top_b]
+};
+
+static UMLRTCapsulePart parts_Top[] =
+{
+ {
+ &Top,
+ Capsule_Top::part_a,
+ 1,
+ &slots_Top[0]
+ },
+ {
+ &Top,
+ Capsule_Top::part_b,
+ 1,
+ &slots_Top[1]
+ }
+};
+
+static Capsule_A top_a( &A, &Top_slots[InstId_Top_a], NULL, NULL, true );
+
+static UMLRTSlot * slots_Top_a[] =
+{
+ &Top_slots[InstId_Top_a_c],
+ &Top_slots[InstId_Top_a_d]
+};
+
+static UMLRTCapsulePart parts_Top_a[] =
+{
+ {
+ &A,
+ Capsule_A::part_c,
+ 1,
+ &slots_Top_a[0]
+ },
+ {
+ &A,
+ Capsule_A::part_d,
+ 1,
+ &slots_Top_a[1]
+ }
+};
+
+static UMLRTCommsPortFarEnd borderfarEndList_Top_a_c[] =
+{
+ {
+ 0,
+ &borderports_Top_a_d[Capsule_D::borderport_p]
+ },
+ {
+ 0,
+ &borderports_Top_a_d[Capsule_D::borderport_q]
+ }
+};
+
+UMLRTCommsPort borderports_Top_a_c[] =
+{
+ {
+ &C,
+ Capsule_C::borderport_p,
+ &Top_slots[InstId_Top_a_c],
+ 1,
+ borderfarEndList_Top_a_c,
+ NULL,
+ NULL,
+ "",
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ },
+ {
+ &C,
+ Capsule_C::borderport_q,
+ &Top_slots[InstId_Top_a_c],
+ 1,
+ &borderfarEndList_Top_a_c[1],
+ NULL,
+ NULL,
+ "",
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ }
+};
+
+static const UMLRTCommsPort * borderports_Top_a_c_ptrs[] =
+{
+ &borderports_Top_a_c[0],
+ &borderports_Top_a_c[1]
+};
+
+static Capsule_C top_a_c( &C, &Top_slots[InstId_Top_a_c], borderports_Top_a_c_ptrs, NULL, true );
+
+static UMLRTCommsPortFarEnd borderfarEndList_Top_a_d[] =
+{
+ {
+ 0,
+ &borderports_Top_a_c[Capsule_C::borderport_p]
+ },
+ {
+ 0,
+ &borderports_Top_a_c[Capsule_C::borderport_q]
+ }
+};
+
+UMLRTCommsPort borderports_Top_a_d[] =
+{
+ {
+ &D,
+ Capsule_D::borderport_p,
+ &Top_slots[InstId_Top_a_d],
+ 1,
+ borderfarEndList_Top_a_d,
+ NULL,
+ NULL,
+ "",
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ },
+ {
+ &D,
+ Capsule_D::borderport_q,
+ &Top_slots[InstId_Top_a_d],
+ 1,
+ &borderfarEndList_Top_a_d[1],
+ NULL,
+ NULL,
+ "",
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ }
+};
+
+static const UMLRTCommsPort * borderports_Top_a_d_ptrs[] =
+{
+ &borderports_Top_a_d[0],
+ &borderports_Top_a_d[1]
+};
+
+static Capsule_D top_a_d( &D, &Top_slots[InstId_Top_a_d], borderports_Top_a_d_ptrs, NULL, true );
+
+static Capsule_B top_b( &B, &Top_slots[InstId_Top_b], NULL, NULL, true );
+
+static UMLRTSlot * slots_Top_b[] =
+{
+ &Top_slots[InstId_Top_b_c],
+ &Top_slots[InstId_Top_b_d]
+};
+
+static UMLRTCapsulePart parts_Top_b[] =
+{
+ {
+ &B,
+ Capsule_B::part_c,
+ 1,
+ &slots_Top_b[0]
+ },
+ {
+ &B,
+ Capsule_B::part_d,
+ 1,
+ &slots_Top_b[1]
+ }
+};
+
+static UMLRTCommsPortFarEnd borderfarEndList_Top_b_c[] =
+{
+ {
+ 0,
+ &borderports_Top_b_d[Capsule_D::borderport_p]
+ },
+ {
+ 0,
+ NULL
+ }
+};
+
+UMLRTCommsPort borderports_Top_b_c[] =
+{
+ {
+ &C,
+ Capsule_C::borderport_p,
+ &Top_slots[InstId_Top_b_c],
+ 1,
+ borderfarEndList_Top_b_c,
+ NULL,
+ NULL,
+ "",
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ },
+ {
+ &C,
+ Capsule_C::borderport_q,
+ &Top_slots[InstId_Top_b_c],
+ 1,
+ &borderfarEndList_Top_b_c[1],
+ NULL,
+ NULL,
+ "",
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ }
+};
+
+static const UMLRTCommsPort * borderports_Top_b_c_ptrs[] =
+{
+ &borderports_Top_b_c[0],
+ &borderports_Top_b_c[1]
+};
+
+static Capsule_C top_b_c( &C, &Top_slots[InstId_Top_b_c], borderports_Top_b_c_ptrs, NULL, true );
+
+static UMLRTCommsPortFarEnd borderfarEndList_Top_b_d[] =
+{
+ {
+ 0,
+ &borderports_Top_b_c[Capsule_C::borderport_p]
+ },
+ {
+ 0,
+ NULL
+ }
+};
+
+UMLRTCommsPort borderports_Top_b_d[] =
+{
+ {
+ &D,
+ Capsule_D::borderport_p,
+ &Top_slots[InstId_Top_b_d],
+ 1,
+ borderfarEndList_Top_b_d,
+ NULL,
+ NULL,
+ "",
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ },
+ {
+ &D,
+ Capsule_D::borderport_q,
+ &Top_slots[InstId_Top_b_d],
+ 1,
+ &borderfarEndList_Top_b_d[1],
+ NULL,
+ NULL,
+ "",
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ }
+};
+
+static const UMLRTCommsPort * borderports_Top_b_d_ptrs[] =
+{
+ &borderports_Top_b_d[0],
+ &borderports_Top_b_d[1]
+};
+
+static Capsule_D top_b_d( &D, &Top_slots[InstId_Top_b_d], borderports_Top_b_d_ptrs, NULL, true );
+
+UMLRTSlot Top_slots[] =
+{
+ {
+ "Top",
+ 0,
+ &Top,
+ NULL,
+ 0,
+ &top,
+ &DefaultController_,
+ 2,
+ parts_Top,
+ 0,
+ NULL,
+ NULL,
+ true,
+ false
+ },
+ {
+ "Top.a",
+ 0,
+ &A,
+ &Top,
+ Capsule_Top::part_a,
+ &top_a,
+ &DefaultController_,
+ 2,
+ parts_Top_a,
+ 0,
+ NULL,
+ NULL,
+ true,
+ false
+ },
+ {
+ "Top.a.c",
+ 0,
+ &C,
+ &A,
+ Capsule_A::part_c,
+ &top_a_c,
+ &DefaultController_,
+ 0,
+ NULL,
+ 2,
+ borderports_Top_a_c,
+ NULL,
+ true,
+ false
+ },
+ {
+ "Top.a.d",
+ 0,
+ &D,
+ &A,
+ Capsule_A::part_d,
+ &top_a_d,
+ &DefaultController_,
+ 0,
+ NULL,
+ 2,
+ borderports_Top_a_d,
+ NULL,
+ true,
+ false
+ },
+ {
+ "Top.b",
+ 0,
+ &B,
+ &Top,
+ Capsule_Top::part_b,
+ &top_b,
+ &DefaultController_,
+ 2,
+ parts_Top_b,
+ 0,
+ NULL,
+ NULL,
+ true,
+ false
+ },
+ {
+ "Top.b.c",
+ 0,
+ &C,
+ &B,
+ Capsule_B::part_c,
+ &top_b_c,
+ &DefaultController_,
+ 0,
+ NULL,
+ 2,
+ borderports_Top_b_c,
+ NULL,
+ true,
+ false
+ },
+ {
+ "Top.b.d",
+ 0,
+ &D,
+ &B,
+ Capsule_B::part_d,
+ &top_b_d,
+ &DefaultController_,
+ 0,
+ NULL,
+ 2,
+ borderports_Top_b_d,
+ NULL,
+ true,
+ false
+ }
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/TopControllers.hh b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/TopControllers.hh
new file mode 100644
index 0000000..fa59cf3
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/TopControllers.hh
@@ -0,0 +1,27 @@
+
+#ifndef TOPCONTROLLERS_HH
+#define TOPCONTROLLERS_HH
+
+class UMLRTController;
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+enum CapsuleInstanceId
+{
+ InstId_Top,
+ InstId_Top_a,
+ InstId_Top_a_c,
+ InstId_Top_a_d,
+ InstId_Top_b,
+ InstId_Top_b_c,
+ InstId_Top_b_d
+};
+extern UMLRTController * DefaultController;
+extern UMLRTCommsPort borderports_Top_a_c[];
+extern UMLRTCommsPort borderports_Top_a_d[];
+extern UMLRTCommsPort borderports_Top_b_c[];
+extern UMLRTCommsPort borderports_Top_b_d[];
+extern UMLRTSlot Top_slots[];
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/TopMain.cc b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/TopMain.cc
new file mode 100644
index 0000000..dd54823
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsConnectors/expected_src/TopMain.cc
@@ -0,0 +1,38 @@
+#include "umlrtmain.hh"
+
+#include "umlrtcontroller.hh"
+#include "TopControllers.hh"
+#include "umlrtcapsuletocontrollermap.hh"
+#include "umlrtmessagepool.hh"
+#include "umlrtsignalelementpool.hh"
+#include "umlrttimerpool.hh"
+#include "umlrtuserconfig.hh"
+#include <stdio.h>
+
+static UMLRTSignalElement signalElementBuffer[USER_CONFIG_SIGNAL_ELEMENT_POOL_SIZE];
+static UMLRTSignalElementPool signalElementPool( signalElementBuffer, USER_CONFIG_SIGNAL_ELEMENT_POOL_SIZE );
+
+static UMLRTMessage messageBuffer[USER_CONFIG_MESSAGE_POOL_SIZE];
+static UMLRTMessagePool messagePool( messageBuffer, USER_CONFIG_MESSAGE_POOL_SIZE );
+
+static UMLRTTimer timers[USER_CONFIG_TIMER_POOL_SIZE];
+static UMLRTTimerPool timerPool( timers, USER_CONFIG_TIMER_POOL_SIZE );
+
+int main( int argc, char * argv[] )
+{
+ UMLRTController::initializePools( &signalElementPool, &messagePool, &timerPool );
+ UMLRTMain::setArgs( argc, argv );
+ UMLRTCapsuleToControllerMap::setDefaultSlotList( Top_slots, 7 );
+
+ if( ! UMLRTMain::targetStartup() )
+ return EXIT_FAILURE;
+
+ DefaultController->spawn();
+
+ if( ! UMLRTMain::mainLoop() )
+ return UMLRTMain::targetShutdown( false );
+
+ DefaultController->join();
+
+ return UMLRTMain::targetShutdown( true );
+}
diff --git a/models/tests/codepattern/structure/ExclusionsParts/.project b/models/tests/codepattern/structure/ExclusionsParts/.project
new file mode 100644
index 0000000..bf5dbae
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>ExclusionsParts</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/models/tests/codepattern/structure/ExclusionsParts/ExclusionsParts.di b/models/tests/codepattern/structure/ExclusionsParts/ExclusionsParts.di
new file mode 100644
index 0000000..bf9abab
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/ExclusionsParts.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/models/tests/codepattern/structure/ExclusionsParts/ExclusionsParts.notation b/models/tests/codepattern/structure/ExclusionsParts/ExclusionsParts.notation
new file mode 100644
index 0000000..a9bccaa
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/ExclusionsParts.notation
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:configuration="http://www.eclipse.org/papyrus/infra/viewpoints/configuration" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_1jERcPSAEea2LN1G6nX9Ew" type="CompositeStructure" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_1jFfkPSAEea2LN1G6nX9Ew" type="Class_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1jFfkvSAEea2LN1G6nX9Ew" type="Class_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1jFfk_SAEea2LN1G6nX9Ew" type="Class_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1jFflPSAEea2LN1G6nX9Ew" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1jGGoPSAEea2LN1G6nX9Ew" type="Class_StructureCompartment">
+ <children xmi:type="notation:Shape" xmi:id="_2NrUsPSAEea2LN1G6nX9Ew" type="Property_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_2NrUsvSAEea2LN1G6nX9Ew" type="Property_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2NrUs_SAEea2LN1G6nX9Ew" type="Property_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_2Nr7wPSAEea2LN1G6nX9Ew" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_2Nr7wfSAEea2LN1G6nX9Ew" type="Property_StructureCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_2Nr7wvSAEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2Nr7w_SAEea2LN1G6nX9Ew"/>
+ </children>
+ <element xmi:type="uml:Property" href="ExclusionsParts.uml#_2LnfMPSAEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2NrUsfSAEea2LN1G6nX9Ew" x="133" y="78"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2N2T0_SAEea2LN1G6nX9Ew" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_2N2T1PSAEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_2N264PSAEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsParts.uml#_2LnfMPSAEea2LN1G6nX9Ew"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2N2T1fSAEea2LN1G6nX9Ew" x="282" y="70"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2s0u0PSAEea2LN1G6nX9Ew" type="Property_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_2s1V4PSAEea2LN1G6nX9Ew" type="Property_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2s1V4fSAEea2LN1G6nX9Ew" type="Property_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_2s1V4vSAEea2LN1G6nX9Ew" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_2s1V4_SAEea2LN1G6nX9Ew" type="Property_StructureCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_2s1V5PSAEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2s1V5fSAEea2LN1G6nX9Ew"/>
+ </children>
+ <element xmi:type="uml:Property" href="ExclusionsParts.uml#_2suoMPSAEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2s0u0fSAEea2LN1G6nX9Ew" x="311" y="78"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2s_t8PSAEea2LN1G6nX9Ew" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_2s_t8fSAEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_2s_t8_SAEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsParts.uml#_2suoMPSAEea2LN1G6nX9Ew"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2s_t8vSAEea2LN1G6nX9Ew" x="474" y="78"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1jGGofSAEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1jGGovSAEea2LN1G6nX9Ew"/>
+ </children>
+ <element xmi:type="uml:Class" href="ExclusionsParts.uml#_Rd2koPL9EeaxArWOMh2XAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1jFfkfSAEea2LN1G6nX9Ew" x="33" y="44" width="500" height="250"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1kTnkPSAEea2LN1G6nX9Ew" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1kTnkfSAEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_1kTnk_SAEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="ExclusionsParts.uml#_Rd2koPL9EeaxArWOMh2XAA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1kTnkvSAEea2LN1G6nX9Ew" x="240" y="40"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_1jERcfSAEea2LN1G6nX9Ew" name="diagram_compatibility_version" stringValue="1.2.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_1jERcvSAEea2LN1G6nX9Ew"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_1jERc_SAEea2LN1G6nX9Ew">
+ <owner xmi:type="uml:Class" href="ExclusionsParts.uml#_Rd2koPL9EeaxArWOMh2XAA"/>
+ <configuration xmi:type="configuration:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrusrt.umlrt.tooling.diagram.common/configuration/UMLRT.configuration#_Z79eQHcZEeSnWeKqQOfW2A"/>
+ </styles>
+ <element xmi:type="uml:Class" href="ExclusionsParts.uml#_Rd2koPL9EeaxArWOMh2XAA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_1kTnlPSAEea2LN1G6nX9Ew" type="StereotypeCommentLink" source="_1jFfkPSAEea2LN1G6nX9Ew" target="_1kTnkPSAEea2LN1G6nX9Ew">
+ <styles xmi:type="notation:FontStyle" xmi:id="_1kTnlfSAEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_1kUOofSAEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="ExclusionsParts.uml#_Rd2koPL9EeaxArWOMh2XAA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1kTnlvSAEea2LN1G6nX9Ew" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1kTnl_SAEea2LN1G6nX9Ew"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1kUOoPSAEea2LN1G6nX9Ew"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_2N264fSAEea2LN1G6nX9Ew" type="StereotypeCommentLink" source="_2NrUsPSAEea2LN1G6nX9Ew" target="_2N2T0_SAEea2LN1G6nX9Ew">
+ <styles xmi:type="notation:FontStyle" xmi:id="_2N264vSAEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_2N265vSAEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsParts.uml#_2LnfMPSAEea2LN1G6nX9Ew"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2N264_SAEea2LN1G6nX9Ew" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2N265PSAEea2LN1G6nX9Ew"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2N265fSAEea2LN1G6nX9Ew"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_2s_t9PSAEea2LN1G6nX9Ew" type="StereotypeCommentLink" source="_2s0u0PSAEea2LN1G6nX9Ew" target="_2s_t8PSAEea2LN1G6nX9Ew">
+ <styles xmi:type="notation:FontStyle" xmi:id="_2s_t9fSAEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_2tAVAPSAEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsParts.uml#_2suoMPSAEea2LN1G6nX9Ew"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2s_t9vSAEea2LN1G6nX9Ew" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2s_t9_SAEea2LN1G6nX9Ew"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2s_t-PSAEea2LN1G6nX9Ew"/>
+ </edges>
+</notation:Diagram>
diff --git a/models/tests/codepattern/structure/ExclusionsParts/ExclusionsParts.uml b/models/tests/codepattern/structure/ExclusionsParts/ExclusionsParts.uml
new file mode 100644
index 0000000..9fa4507
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/ExclusionsParts.uml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:UMLRealTime="http://www.eclipse.org/papyrus/umlrt" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <uml:Model xmi:id="_M1FpwPL9EeaxArWOMh2XAA" name="ExclusionsParts">
+ <packagedElement xmi:type="uml:Package" xmi:id="_OtShgPL9EeaxArWOMh2XAA" name="Protocol1">
+ <packagedElement xmi:type="uml:Collaboration" xmi:id="_OqOmcPL9EeaxArWOMh2XAA" name="Protocol1">
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_OtZPMPL9EeaxArWOMh2XAA" client="_OqOmcPL9EeaxArWOMh2XAA" supplier="_OtWy8PL9EeaxArWOMh2XAA" contract="_OtWy8PL9EeaxArWOMh2XAA"/>
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_Otf84PL9EeaxArWOMh2XAA" client="_OqOmcPL9EeaxArWOMh2XAA" supplier="_OteHsPL9EeaxArWOMh2XAA" contract="_OteHsPL9EeaxArWOMh2XAA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_OtWy8PL9EeaxArWOMh2XAA" name="Protocol1"/>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_OtadUPL9EeaxArWOMh2XAA" name="Protocol1~"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_Otc5kPL9EeaxArWOMh2XAA" client="_OqOmcPL9EeaxArWOMh2XAA" supplier="_OtadUPL9EeaxArWOMh2XAA"/>
+ <packagedElement xmi:type="uml:AnyReceiveEvent" xmi:id="_OtdgoPL9EeaxArWOMh2XAA" name="*"/>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_OteHsPL9EeaxArWOMh2XAA" name="Protocol1IO"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_OthLAPL9EeaxArWOMh2XAA" client="_OqOmcPL9EeaxArWOMh2XAA" supplier="_OteHsPL9EeaxArWOMh2XAA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Rd2koPL9EeaxArWOMh2XAA" name="Top" isActive="true">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_2LnfMPSAEea2LN1G6nX9Ew" name="a" visibility="protected" type="_TOmwkPL9EeaxArWOMh2XAA" isOrdered="true" aggregation="composite"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_2suoMPSAEea2LN1G6nX9Ew" name="b" visibility="protected" type="_UOGesPL9EeaxArWOMh2XAA" isOrdered="true" aggregation="composite"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TOmwkPL9EeaxArWOMh2XAA" name="A" isActive="true">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_dt_gkPL9EeaxArWOMh2XAA" name="c1" visibility="protected" type="_W_MtUPL9EeaxArWOMh2XAA" isOrdered="true" aggregation="composite"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_hzQs0PL9EeaxArWOMh2XAA" name="c2" visibility="protected" type="_W_MtUPL9EeaxArWOMh2XAA" isOrdered="true" aggregation="composite"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_jzSq4PL9EeaxArWOMh2XAA" name="c3" visibility="protected" type="_W_MtUPL9EeaxArWOMh2XAA" isOrdered="true" aggregation="composite"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_UOGesPL9EeaxArWOMh2XAA" name="B" isActive="true">
+ <generalization xmi:type="uml:Generalization" xmi:id="_bPHDUPL9EeaxArWOMh2XAA" general="_TOmwkPL9EeaxArWOMh2XAA"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_hzTJEfL9EeaxArWOMh2XAA" type="_ZK-BUPL9EeaxArWOMh2XAA" redefinedProperty="_hzQs0PL9EeaxArWOMh2XAA"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_jzUgEPL9EeaxArWOMh2XAA" redefinedProperty="_jzSq4PL9EeaxArWOMh2XAA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_W_MtUPL9EeaxArWOMh2XAA" name="C" isActive="true"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ZK-BUPL9EeaxArWOMh2XAA" name="D" isActive="true">
+ <generalization xmi:type="uml:Generalization" xmi:id="_cqvT0PL9EeaxArWOMh2XAA" general="_W_MtUPL9EeaxArWOMh2XAA"/>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_M1gggPL9EeaxArWOMh2XAA">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M1hHkPL9EeaxArWOMh2XAA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/umlrt#/"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_1h74oEeVEeO0lv5O1DTHOQ"/>
+ </profileApplication>
+ </uml:Model>
+ <UMLRealTime:ProtocolContainer xmi:id="_OtUWsPL9EeaxArWOMh2XAA" base_Package="_OtShgPL9EeaxArWOMh2XAA"/>
+ <UMLRealTime:RTMessageSet xmi:id="_OtYBEPL9EeaxArWOMh2XAA" base_Interface="_OtWy8PL9EeaxArWOMh2XAA"/>
+ <UMLRealTime:RTMessageSet xmi:id="_OtbrcPL9EeaxArWOMh2XAA" base_Interface="_OtadUPL9EeaxArWOMh2XAA" rtMsgKind="out"/>
+ <UMLRealTime:RTMessageSet xmi:id="_OtfV0PL9EeaxArWOMh2XAA" base_Interface="_OteHsPL9EeaxArWOMh2XAA" rtMsgKind="inOut"/>
+ <UMLRealTime:Protocol xmi:id="_OthyEPL9EeaxArWOMh2XAA" base_Collaboration="_OqOmcPL9EeaxArWOMh2XAA"/>
+ <UMLRealTime:Capsule xmi:id="_ReAVoPL9EeaxArWOMh2XAA" base_Class="_Rd2koPL9EeaxArWOMh2XAA"/>
+ <UMLRealTime:Capsule xmi:id="_TOv6gPL9EeaxArWOMh2XAA" base_Class="_TOmwkPL9EeaxArWOMh2XAA"/>
+ <UMLRealTime:Capsule xmi:id="_UOPBkPL9EeaxArWOMh2XAA" base_Class="_UOGesPL9EeaxArWOMh2XAA"/>
+ <UMLRealTime:Capsule xmi:id="_W_XscPL9EeaxArWOMh2XAA" base_Class="_W_MtUPL9EeaxArWOMh2XAA"/>
+ <UMLRealTime:Capsule xmi:id="_ZLF9IPL9EeaxArWOMh2XAA" base_Class="_ZK-BUPL9EeaxArWOMh2XAA"/>
+ <UMLRealTime:CapsulePart xmi:id="_duEZEPL9EeaxArWOMh2XAA" base_Property="_dt_gkPL9EeaxArWOMh2XAA"/>
+ <UMLRealTime:CapsulePart xmi:id="_hzTJEPL9EeaxArWOMh2XAA" base_Property="_hzQs0PL9EeaxArWOMh2XAA"/>
+ <UMLRealTime:CapsulePart xmi:id="_jzT5APL9EeaxArWOMh2XAA" base_Property="_jzSq4PL9EeaxArWOMh2XAA"/>
+ <UMLRealTime:CapsulePart xmi:id="_hzUXMPL9EeaxArWOMh2XAA" base_Property="_hzTJEfL9EeaxArWOMh2XAA"/>
+ <UMLRealTime:RTRedefinedElement xmi:id="_nBr5gPL9EeaxArWOMh2XAA" base_RedefinableElement="_hzTJEfL9EeaxArWOMh2XAA" rootFragment="_hzQs0PL9EeaxArWOMh2XAA"/>
+ <UMLRealTime:CapsulePart xmi:id="_jzUgEfL9EeaxArWOMh2XAA" base_Property="_jzUgEPL9EeaxArWOMh2XAA"/>
+ <UMLRealTime:RTRedefinedElement xmi:id="_oJYhYPL9EeaxArWOMh2XAA" base_RedefinableElement="_jzUgEPL9EeaxArWOMh2XAA"/>
+ <UMLRealTime:CapsulePart xmi:id="_2LpUYPSAEea2LN1G6nX9Ew" base_Property="_2LnfMPSAEea2LN1G6nX9Ew"/>
+ <UMLRealTime:CapsulePart xmi:id="_2sxEcPSAEea2LN1G6nX9Ew" base_Property="_2suoMPSAEea2LN1G6nX9Ew"/>
+</xmi:XMI>
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/A.cc b/models/tests/codepattern/structure/ExclusionsParts/expected_src/A.cc
new file mode 100644
index 0000000..c79e09f
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/A.cc
@@ -0,0 +1,91 @@
+
+#include "A.hh"
+
+#include "C.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcapsulepart.hh"
+#include "umlrtslot.hh"
+#include <cstddef>
+#include "umlrtcapsulerole.hh"
+#include "umlrtframeservice.hh"
+class UMLRTRtsInterface;
+struct UMLRTCommsPort;
+
+Capsule_A::Capsule_A( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat )
+: UMLRTCapsule( NULL, cd, st, border, internal, isStat )
+, c1( &slot->parts[part_c1] )
+, c2( &slot->parts[part_c2] )
+, c3( &slot->parts[part_c3] )
+{
+}
+
+
+
+
+
+void Capsule_A::bindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_A::unbindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_A::initialize( const UMLRTMessage & msg )
+{
+}
+
+void Capsule_A::inject( const UMLRTMessage & msg )
+{
+}
+
+
+static const UMLRTCapsuleRole roles[] =
+{
+ {
+ "c1",
+ &C,
+ 1,
+ 1,
+ false,
+ false
+ },
+ {
+ "c2",
+ &C,
+ 1,
+ 1,
+ false,
+ false
+ },
+ {
+ "c3",
+ &C,
+ 1,
+ 1,
+ false,
+ false
+ }
+};
+
+static void instantiate_A( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts )
+{
+ C.instantiate( NULL, slot->parts[Capsule_A::part_c1].slots[0], UMLRTFrameService::createBorderPorts( slot->parts[Capsule_A::part_c1].slots[0], C.numPortRolesBorder ) );
+ C.instantiate( NULL, slot->parts[Capsule_A::part_c2].slots[0], UMLRTFrameService::createBorderPorts( slot->parts[Capsule_A::part_c2].slots[0], C.numPortRolesBorder ) );
+ C.instantiate( NULL, slot->parts[Capsule_A::part_c3].slots[0], UMLRTFrameService::createBorderPorts( slot->parts[Capsule_A::part_c3].slots[0], C.numPortRolesBorder ) );
+ slot->capsule = new Capsule_A( &A, slot, borderPorts, NULL, false );
+}
+
+const UMLRTCapsuleClass A =
+{
+ "A",
+ NULL,
+ instantiate_A,
+ 3,
+ roles,
+ 0,
+ NULL,
+ 0,
+ NULL
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/A.hh b/models/tests/codepattern/structure/ExclusionsParts/expected_src/A.hh
new file mode 100644
index 0000000..90e37cc
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/A.hh
@@ -0,0 +1,35 @@
+
+#ifndef A_HH
+#define A_HH
+
+#include "umlrtcapsule.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtmessage.hh"
+struct UMLRTCapsulePart;
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+class Capsule_A : public UMLRTCapsule
+{
+public:
+ Capsule_A( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat );
+ enum PartId
+ {
+ part_c1,
+ part_c2,
+ part_c3
+ };
+protected:
+ const UMLRTCapsulePart * const c1;
+ const UMLRTCapsulePart * const c2;
+ const UMLRTCapsulePart * const c3;
+public:
+ virtual void bindPort( bool isBorder, int portId, int index );
+ virtual void unbindPort( bool isBorder, int portId, int index );
+ virtual void initialize( const UMLRTMessage & msg );
+ virtual void inject( const UMLRTMessage & msg );
+};
+extern const UMLRTCapsuleClass A;
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/B.cc b/models/tests/codepattern/structure/ExclusionsParts/expected_src/B.cc
new file mode 100644
index 0000000..23534d0
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/B.cc
@@ -0,0 +1,82 @@
+
+#include "B.hh"
+
+#include "A.hh"
+#include "C.hh"
+#include "D.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcapsulepart.hh"
+#include "umlrtcapsulerole.hh"
+#include "umlrtframeservice.hh"
+#include "umlrtslot.hh"
+#include <cstddef>
+class UMLRTRtsInterface;
+struct UMLRTCommsPort;
+
+Capsule_B::Capsule_B( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat )
+: Capsule_A( cd, st, border, internal, isStat )
+, c2( &slot->parts[part_c2] )
+, c1( &slot->parts[part_c1] )
+{
+}
+
+
+
+
+void Capsule_B::bindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_B::unbindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_B::initialize( const UMLRTMessage & msg )
+{
+}
+
+void Capsule_B::inject( const UMLRTMessage & msg )
+{
+}
+
+
+static const UMLRTCapsuleRole roles[] =
+{
+ {
+ "c1",
+ &C,
+ 1,
+ 1,
+ false,
+ false
+ },
+ {
+ "c2",
+ &D,
+ 1,
+ 1,
+ false,
+ false
+ }
+};
+
+static void instantiate_B( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts )
+{
+ C.instantiate( NULL, slot->parts[Capsule_B::part_c1].slots[0], UMLRTFrameService::createBorderPorts( slot->parts[Capsule_B::part_c1].slots[0], C.numPortRolesBorder ) );
+ D.instantiate( NULL, slot->parts[Capsule_B::part_c2].slots[0], UMLRTFrameService::createBorderPorts( slot->parts[Capsule_B::part_c2].slots[0], D.numPortRolesBorder ) );
+ slot->capsule = new Capsule_B( &B, slot, borderPorts, NULL, false );
+}
+
+const UMLRTCapsuleClass B =
+{
+ "B",
+ &A,
+ instantiate_B,
+ 2,
+ roles,
+ 0,
+ NULL,
+ 0,
+ NULL
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/B.hh b/models/tests/codepattern/structure/ExclusionsParts/expected_src/B.hh
new file mode 100644
index 0000000..3308b6b
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/B.hh
@@ -0,0 +1,34 @@
+
+#ifndef B_HH
+#define B_HH
+
+#include "A.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtmessage.hh"
+struct UMLRTCapsulePart;
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+class Capsule_B : public Capsule_A
+{
+public:
+ Capsule_B( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat );
+ enum PartId
+ {
+ part_c1,
+ part_c2,
+ part_c3
+ };
+protected:
+ const UMLRTCapsulePart * const c2;
+ const UMLRTCapsulePart * const c1;
+public:
+ virtual void bindPort( bool isBorder, int portId, int index );
+ virtual void unbindPort( bool isBorder, int portId, int index );
+ virtual void initialize( const UMLRTMessage & msg );
+ virtual void inject( const UMLRTMessage & msg );
+};
+extern const UMLRTCapsuleClass B;
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/C.cc b/models/tests/codepattern/structure/ExclusionsParts/expected_src/C.cc
new file mode 100644
index 0000000..e628ed9
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/C.cc
@@ -0,0 +1,50 @@
+
+#include "C.hh"
+
+#include "umlrtslot.hh"
+#include <cstddef>
+#include "umlrtcapsuleclass.hh"
+class UMLRTRtsInterface;
+struct UMLRTCommsPort;
+
+Capsule_C::Capsule_C( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat )
+: UMLRTCapsule( NULL, cd, st, border, internal, isStat )
+{
+}
+
+
+void Capsule_C::bindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_C::unbindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_C::initialize( const UMLRTMessage & msg )
+{
+}
+
+void Capsule_C::inject( const UMLRTMessage & msg )
+{
+}
+
+
+static void instantiate_C( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts )
+{
+ slot->capsule = new Capsule_C( &C, slot, borderPorts, NULL, false );
+}
+
+const UMLRTCapsuleClass C =
+{
+ "C",
+ NULL,
+ instantiate_C,
+ 0,
+ NULL,
+ 0,
+ NULL,
+ 0,
+ NULL
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/C.hh b/models/tests/codepattern/structure/ExclusionsParts/expected_src/C.hh
new file mode 100644
index 0000000..7339201
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/C.hh
@@ -0,0 +1,26 @@
+
+#ifndef C_HH
+#define C_HH
+
+#include "umlrtcapsule.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtmessage.hh"
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+class Capsule_C : public UMLRTCapsule
+{
+public:
+ Capsule_C( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat );
+ enum PartId
+ {
+ };
+ virtual void bindPort( bool isBorder, int portId, int index );
+ virtual void unbindPort( bool isBorder, int portId, int index );
+ virtual void initialize( const UMLRTMessage & msg );
+ virtual void inject( const UMLRTMessage & msg );
+};
+extern const UMLRTCapsuleClass C;
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/CMakeLists.txt b/models/tests/codepattern/structure/ExclusionsParts/expected_src/CMakeLists.txt
new file mode 100644
index 0000000..0148ec5
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/CMakeLists.txt
@@ -0,0 +1,36 @@
+# Generated 2017-02-16 14:48:30
+
+cmake_minimum_required(VERSION 2.8.7)
+set(TARGET TopMain)
+project(${TARGET})
+
+# require location of supporting RTS
+if (NOT UMLRTS_ROOT)
+ if (DEFINED ENV{UMLRTS_ROOT})
+ set(UMLRTS_ROOT $ENV{UMLRTS_ROOT})
+ else ()
+ set(UMLRTS_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/umlrt.rts)
+ endif ()
+endif ()
+
+# setup primary envars - provides tooling config
+include(${UMLRTS_ROOT}/build/buildenv.cmake)
+
+# model sources
+set(SRCS TopMain.cc Protocol1.cc C.cc A.cc B.cc D.cc Top.cc TopControllers.cc )
+
+# specify target
+add_executable(${TARGET} ${SRCS})
+
+# setup lib dependency support after defining TARGET
+include(${UMLRTS_ROOT}/build/rtslib.cmake)
+
+# compiler parameters
+set_target_properties(${TARGET} PROPERTIES COMPILE_OPTIONS "${COPTS}")
+set_target_properties(${TARGET} PROPERTIES COMPILE_DEFINITIONS "${CDEFS}")
+include_directories(${INCS})
+
+# linker parameters
+set_target_properties(${TARGET} PROPERTIES CMAKE_EXE_LINKER_FLAGS "${LOPTS}")
+target_link_libraries(${TARGET} ${LIBS})
+
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/D.cc b/models/tests/codepattern/structure/ExclusionsParts/expected_src/D.cc
new file mode 100644
index 0000000..bd40ded
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/D.cc
@@ -0,0 +1,51 @@
+
+#include "D.hh"
+
+#include "C.hh"
+#include "umlrtslot.hh"
+#include <cstddef>
+#include "umlrtcapsuleclass.hh"
+class UMLRTRtsInterface;
+struct UMLRTCommsPort;
+
+Capsule_D::Capsule_D( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat )
+: Capsule_C( cd, st, border, internal, isStat )
+{
+}
+
+
+void Capsule_D::bindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_D::unbindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_D::initialize( const UMLRTMessage & msg )
+{
+}
+
+void Capsule_D::inject( const UMLRTMessage & msg )
+{
+}
+
+
+static void instantiate_D( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts )
+{
+ slot->capsule = new Capsule_D( &D, slot, borderPorts, NULL, false );
+}
+
+const UMLRTCapsuleClass D =
+{
+ "D",
+ &C,
+ instantiate_D,
+ 0,
+ NULL,
+ 0,
+ NULL,
+ 0,
+ NULL
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/D.hh b/models/tests/codepattern/structure/ExclusionsParts/expected_src/D.hh
new file mode 100644
index 0000000..8706212
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/D.hh
@@ -0,0 +1,26 @@
+
+#ifndef D_HH
+#define D_HH
+
+#include "C.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtmessage.hh"
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+class Capsule_D : public Capsule_C
+{
+public:
+ Capsule_D( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat );
+ enum PartId
+ {
+ };
+ virtual void bindPort( bool isBorder, int portId, int index );
+ virtual void unbindPort( bool isBorder, int portId, int index );
+ virtual void initialize( const UMLRTMessage & msg );
+ virtual void inject( const UMLRTMessage & msg );
+};
+extern const UMLRTCapsuleClass D;
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/Makefile b/models/tests/codepattern/structure/ExclusionsParts/expected_src/Makefile
new file mode 100644
index 0000000..0bcbd22
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/Makefile
@@ -0,0 +1,11 @@
+##################################################
+# Default makefile
+# Redirect make to target makefile
+##################################################
+
+all:
+ make -f MakefileTop.mk all
+clean:
+ make -f MakefileTop.mk clean
+.PHONY:
+ make -f MakefileTop.mk all clean
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/MakefileTop.mk b/models/tests/codepattern/structure/ExclusionsParts/expected_src/MakefileTop.mk
new file mode 100644
index 0000000..a16bc08
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/MakefileTop.mk
@@ -0,0 +1,49 @@
+# set default value for TARGETOS if is it not defined
+ifeq ($(TARGETOS), )
+$(warning warning: TARGETOS not defined. Choosing linux)
+TARGETOS=linux
+endif
+
+# set default value for BUILDTOOLS if is it not defined
+ifeq ($(BUILDTOOLS), )
+$(warning warning: BUILDTOOLS not defined. Choosing x86-gcc-4.6.3)
+BUILDTOOLS=x86-gcc-4.6.3
+endif
+
+# Location of RTS root.
+UMLRTS_ROOT ?= ./umlrt.rts
+
+CONFIG=$(TARGETOS).$(BUILDTOOLS)
+
+# Destination directory for the RTS services library.
+LIBDEST=$(UMLRTS_ROOT)/lib/$(CONFIG)
+
+include $(UMLRTS_ROOT)/build/host/host.mk
+include $(UMLRTS_ROOT)/build/buildtools/$(BUILDTOOLS)/buildtools.mk
+
+LD_PATHS=$(LIBDEST)
+CC_INCLUDES+=$(UMLRTS_ROOT)/include
+
+CC_DEFINES:=$(foreach d, $(CC_DEFINES), $(CC_DEF)$d)
+CC_INCLUDES:=$(foreach i, $(CC_INCLUDES), $(CC_INC)$i)
+LD_LIBS:=$(foreach i, $(LD_LIBS), $(LD_LIB)$i)
+LD_PATHS:=$(foreach i, $(LD_PATHS), $(LD_LIBPATH)$i)
+
+SRCS = TopMain.cc Protocol1.cc C.cc A.cc B.cc D.cc Top.cc TopControllers.cc
+OBJS = $(subst $(CC_EXT),$(OBJ_EXT),$(SRCS))
+
+MAIN = TopMain$(EXE_EXT)
+
+all: $(MAIN)
+
+$(MAIN): $(OBJS) $(UMLRTS_ROOT)/lib/$(CONFIG)/$(LIB_PRFX)rts$(LIB_EXT)
+ $(LD) $(LD_FLAGS) $(OBJS) $(LD_PATHS) $(LD_LIBS) $(LD_OUT)$@
+
+%$(OBJ_EXT) : %$(CC_EXT)
+ $(CC) $< $(CC_FLAGS) $(CC_DEFINES) $(CC_INCLUDES) $(CC_OUT)$@
+
+clean :
+ @echo $(RM) main$(EXE_EXT) *$(OBJ_EXT) *$(DEP_EXT) $(DBG_FILES)
+ @$(RM) main$(EXE_EXT) *$(OBJ_EXT) *$(DEP_EXT) $(DBG_FILES)
+
+.PHONY: all clean
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/Protocol1.cc b/models/tests/codepattern/structure/ExclusionsParts/expected_src/Protocol1.cc
new file mode 100644
index 0000000..08595db
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/Protocol1.cc
@@ -0,0 +1,16 @@
+
+#include "Protocol1.hh"
+
+struct UMLRTCommsPort;
+
+Protocol1::Base::Base( const UMLRTCommsPort * & srcPort )
+: UMLRTProtocol( srcPort )
+{
+}
+
+Protocol1::Conj::Conj( const UMLRTCommsPort * & srcPort )
+: UMLRTProtocol( srcPort )
+{
+}
+
+
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/Protocol1.hh b/models/tests/codepattern/structure/ExclusionsParts/expected_src/Protocol1.hh
new file mode 100644
index 0000000..f917c8f
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/Protocol1.hh
@@ -0,0 +1,23 @@
+
+#ifndef PROTOCOL1_HH
+#define PROTOCOL1_HH
+
+#include "umlrtprotocol.hh"
+struct UMLRTCommsPort;
+
+namespace Protocol1
+{
+ class Base : public UMLRTProtocol
+ {
+ public:
+ Base( const UMLRTCommsPort * & srcPort );
+ };
+ class Conj : public UMLRTProtocol
+ {
+ public:
+ Conj( const UMLRTCommsPort * & srcPort );
+ };
+};
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/Top-connections.log b/models/tests/codepattern/structure/ExclusionsParts/expected_src/Top-connections.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/Top-connections.log
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/Top.cc b/models/tests/codepattern/structure/ExclusionsParts/expected_src/Top.cc
new file mode 100644
index 0000000..ce5dcb2
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/Top.cc
@@ -0,0 +1,81 @@
+
+#include "Top.hh"
+
+#include "A.hh"
+#include "B.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcapsulepart.hh"
+#include "umlrtslot.hh"
+#include <cstddef>
+#include "umlrtcapsulerole.hh"
+#include "umlrtframeservice.hh"
+class UMLRTRtsInterface;
+struct UMLRTCommsPort;
+
+Capsule_Top::Capsule_Top( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat )
+: UMLRTCapsule( NULL, cd, st, border, internal, isStat )
+, a( &slot->parts[part_a] )
+, b( &slot->parts[part_b] )
+{
+}
+
+
+
+
+void Capsule_Top::bindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_Top::unbindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_Top::initialize( const UMLRTMessage & msg )
+{
+}
+
+void Capsule_Top::inject( const UMLRTMessage & msg )
+{
+}
+
+
+static const UMLRTCapsuleRole roles[] =
+{
+ {
+ "a",
+ &A,
+ 1,
+ 1,
+ false,
+ false
+ },
+ {
+ "b",
+ &B,
+ 1,
+ 1,
+ false,
+ false
+ }
+};
+
+static void instantiate_Top( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts )
+{
+ A.instantiate( NULL, slot->parts[Capsule_Top::part_a].slots[0], UMLRTFrameService::createBorderPorts( slot->parts[Capsule_Top::part_a].slots[0], A.numPortRolesBorder ) );
+ B.instantiate( NULL, slot->parts[Capsule_Top::part_b].slots[0], UMLRTFrameService::createBorderPorts( slot->parts[Capsule_Top::part_b].slots[0], B.numPortRolesBorder ) );
+ slot->capsule = new Capsule_Top( &Top, slot, borderPorts, NULL, false );
+}
+
+const UMLRTCapsuleClass Top =
+{
+ "Top",
+ NULL,
+ instantiate_Top,
+ 2,
+ roles,
+ 0,
+ NULL,
+ 0,
+ NULL
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/Top.hh b/models/tests/codepattern/structure/ExclusionsParts/expected_src/Top.hh
new file mode 100644
index 0000000..2c5910f
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/Top.hh
@@ -0,0 +1,33 @@
+
+#ifndef TOP_HH
+#define TOP_HH
+
+#include "umlrtcapsule.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtmessage.hh"
+struct UMLRTCapsulePart;
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+class Capsule_Top : public UMLRTCapsule
+{
+public:
+ Capsule_Top( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat );
+ enum PartId
+ {
+ part_a,
+ part_b
+ };
+protected:
+ const UMLRTCapsulePart * const a;
+ const UMLRTCapsulePart * const b;
+public:
+ virtual void bindPort( bool isBorder, int portId, int index );
+ virtual void unbindPort( bool isBorder, int portId, int index );
+ virtual void initialize( const UMLRTMessage & msg );
+ virtual void inject( const UMLRTMessage & msg );
+};
+extern const UMLRTCapsuleClass Top;
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/TopControllers.cc b/models/tests/codepattern/structure/ExclusionsParts/expected_src/TopControllers.cc
new file mode 100644
index 0000000..8f7d96d
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/TopControllers.cc
@@ -0,0 +1,240 @@
+
+#include "TopControllers.hh"
+
+#include "A.hh"
+#include "B.hh"
+#include "C.hh"
+#include "D.hh"
+#include "Top.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcapsulepart.hh"
+#include "umlrtcontroller.hh"
+#include "umlrtslot.hh"
+#include <cstddef>
+
+
+static UMLRTController DefaultController_( "DefaultController" );
+
+UMLRTController * DefaultController = &DefaultController_;
+
+static Capsule_Top top( &Top, &Top_slots[InstId_Top], NULL, NULL, true );
+
+static UMLRTSlot * slots_Top[] =
+{
+ &Top_slots[InstId_Top_a],
+ &Top_slots[InstId_Top_b]
+};
+
+static UMLRTCapsulePart parts_Top[] =
+{
+ {
+ &Top,
+ Capsule_Top::part_a,
+ 1,
+ &slots_Top[0]
+ },
+ {
+ &Top,
+ Capsule_Top::part_b,
+ 1,
+ &slots_Top[1]
+ }
+};
+
+static Capsule_A top_a( &A, &Top_slots[InstId_Top_a], NULL, NULL, true );
+
+static UMLRTSlot * slots_Top_a[] =
+{
+ &Top_slots[InstId_Top_a_c1],
+ &Top_slots[InstId_Top_a_c2],
+ &Top_slots[InstId_Top_a_c3]
+};
+
+static UMLRTCapsulePart parts_Top_a[] =
+{
+ {
+ &A,
+ Capsule_A::part_c1,
+ 1,
+ &slots_Top_a[0]
+ },
+ {
+ &A,
+ Capsule_A::part_c2,
+ 1,
+ &slots_Top_a[1]
+ },
+ {
+ &A,
+ Capsule_A::part_c3,
+ 1,
+ &slots_Top_a[2]
+ }
+};
+
+static Capsule_C top_a_c1( &C, &Top_slots[InstId_Top_a_c1], NULL, NULL, true );
+
+static Capsule_C top_a_c2( &C, &Top_slots[InstId_Top_a_c2], NULL, NULL, true );
+
+static Capsule_C top_a_c3( &C, &Top_slots[InstId_Top_a_c3], NULL, NULL, true );
+
+static Capsule_B top_b( &B, &Top_slots[InstId_Top_b], NULL, NULL, true );
+
+static UMLRTSlot * slots_Top_b[] =
+{
+ &Top_slots[InstId_Top_b_c2],
+ &Top_slots[InstId_Top_b_c1]
+};
+
+static UMLRTCapsulePart parts_Top_b[] =
+{
+ {
+ &B,
+ Capsule_B::part_c2,
+ 1,
+ &slots_Top_b[0]
+ },
+ {
+ &B,
+ Capsule_B::part_c1,
+ 1,
+ &slots_Top_b[1]
+ }
+};
+
+static Capsule_C top_b_c1( &C, &Top_slots[InstId_Top_b_c1], NULL, NULL, true );
+
+static Capsule_D top_b_c2( &D, &Top_slots[InstId_Top_b_c2], NULL, NULL, true );
+
+UMLRTSlot Top_slots[] =
+{
+ {
+ "Top",
+ 0,
+ &Top,
+ NULL,
+ 0,
+ &top,
+ &DefaultController_,
+ 2,
+ parts_Top,
+ 0,
+ NULL,
+ NULL,
+ true,
+ false
+ },
+ {
+ "Top.a",
+ 0,
+ &A,
+ &Top,
+ Capsule_Top::part_a,
+ &top_a,
+ &DefaultController_,
+ 3,
+ parts_Top_a,
+ 0,
+ NULL,
+ NULL,
+ true,
+ false
+ },
+ {
+ "Top.a.c1",
+ 0,
+ &C,
+ &A,
+ Capsule_A::part_c1,
+ &top_a_c1,
+ &DefaultController_,
+ 0,
+ NULL,
+ 0,
+ NULL,
+ NULL,
+ true,
+ false
+ },
+ {
+ "Top.a.c2",
+ 0,
+ &C,
+ &A,
+ Capsule_A::part_c2,
+ &top_a_c2,
+ &DefaultController_,
+ 0,
+ NULL,
+ 0,
+ NULL,
+ NULL,
+ true,
+ false
+ },
+ {
+ "Top.a.c3",
+ 0,
+ &C,
+ &A,
+ Capsule_A::part_c3,
+ &top_a_c3,
+ &DefaultController_,
+ 0,
+ NULL,
+ 0,
+ NULL,
+ NULL,
+ true,
+ false
+ },
+ {
+ "Top.b",
+ 0,
+ &B,
+ &Top,
+ Capsule_Top::part_b,
+ &top_b,
+ &DefaultController_,
+ 2,
+ parts_Top_b,
+ 0,
+ NULL,
+ NULL,
+ true,
+ false
+ },
+ {
+ "Top.b.c1",
+ 0,
+ &C,
+ &B,
+ Capsule_B::part_c1,
+ &top_b_c1,
+ &DefaultController_,
+ 0,
+ NULL,
+ 0,
+ NULL,
+ NULL,
+ true,
+ false
+ },
+ {
+ "Top.b.c2",
+ 0,
+ &D,
+ &B,
+ Capsule_B::part_c2,
+ &top_b_c2,
+ &DefaultController_,
+ 0,
+ NULL,
+ 0,
+ NULL,
+ NULL,
+ true,
+ false
+ }
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/TopControllers.hh b/models/tests/codepattern/structure/ExclusionsParts/expected_src/TopControllers.hh
new file mode 100644
index 0000000..d2045a3
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/TopControllers.hh
@@ -0,0 +1,23 @@
+
+#ifndef TOPCONTROLLERS_HH
+#define TOPCONTROLLERS_HH
+
+class UMLRTController;
+struct UMLRTSlot;
+
+enum CapsuleInstanceId
+{
+ InstId_Top,
+ InstId_Top_a,
+ InstId_Top_a_c1,
+ InstId_Top_a_c2,
+ InstId_Top_a_c3,
+ InstId_Top_b,
+ InstId_Top_b_c1,
+ InstId_Top_b_c2
+};
+extern UMLRTController * DefaultController;
+extern UMLRTSlot Top_slots[];
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsParts/expected_src/TopMain.cc b/models/tests/codepattern/structure/ExclusionsParts/expected_src/TopMain.cc
new file mode 100644
index 0000000..dd3921e
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsParts/expected_src/TopMain.cc
@@ -0,0 +1,38 @@
+#include "umlrtmain.hh"
+
+#include "umlrtcontroller.hh"
+#include "TopControllers.hh"
+#include "umlrtcapsuletocontrollermap.hh"
+#include "umlrtmessagepool.hh"
+#include "umlrtsignalelementpool.hh"
+#include "umlrttimerpool.hh"
+#include "umlrtuserconfig.hh"
+#include <stdio.h>
+
+static UMLRTSignalElement signalElementBuffer[USER_CONFIG_SIGNAL_ELEMENT_POOL_SIZE];
+static UMLRTSignalElementPool signalElementPool( signalElementBuffer, USER_CONFIG_SIGNAL_ELEMENT_POOL_SIZE );
+
+static UMLRTMessage messageBuffer[USER_CONFIG_MESSAGE_POOL_SIZE];
+static UMLRTMessagePool messagePool( messageBuffer, USER_CONFIG_MESSAGE_POOL_SIZE );
+
+static UMLRTTimer timers[USER_CONFIG_TIMER_POOL_SIZE];
+static UMLRTTimerPool timerPool( timers, USER_CONFIG_TIMER_POOL_SIZE );
+
+int main( int argc, char * argv[] )
+{
+ UMLRTController::initializePools( &signalElementPool, &messagePool, &timerPool );
+ UMLRTMain::setArgs( argc, argv );
+ UMLRTCapsuleToControllerMap::setDefaultSlotList( Top_slots, 8 );
+
+ if( ! UMLRTMain::targetStartup() )
+ return EXIT_FAILURE;
+
+ DefaultController->spawn();
+
+ if( ! UMLRTMain::mainLoop() )
+ return UMLRTMain::targetShutdown( false );
+
+ DefaultController->join();
+
+ return UMLRTMain::targetShutdown( true );
+}
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/.project b/models/tests/codepattern/structure/ExclusionsPorts/.project
new file mode 100644
index 0000000..9275baa
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>ExclusionsPorts</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/ExclusionsPorts.di b/models/tests/codepattern/structure/ExclusionsPorts/ExclusionsPorts.di
new file mode 100644
index 0000000..bf9abab
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/ExclusionsPorts.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/ExclusionsPorts.notation b/models/tests/codepattern/structure/ExclusionsPorts/ExclusionsPorts.notation
new file mode 100644
index 0000000..619b5ff
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/ExclusionsPorts.notation
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:configuration="http://www.eclipse.org/papyrus/infra/viewpoints/configuration" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_VR0iMPSBEea2LN1G6nX9Ew" type="CompositeStructure" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_VR1JQPSBEea2LN1G6nX9Ew" type="Class_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VR1JQvSBEea2LN1G6nX9Ew" type="Class_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VR1JQ_SBEea2LN1G6nX9Ew" type="Class_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VR1JRPSBEea2LN1G6nX9Ew" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VR1JRfSBEea2LN1G6nX9Ew" type="Class_StructureCompartment">
+ <children xmi:type="notation:Shape" xmi:id="_V0w3MPSBEea2LN1G6nX9Ew" type="Property_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V5DhUPSBEea2LN1G6nX9Ew" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V5EIYPSBEea2LN1G6nX9Ew" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V0xeQPSBEea2LN1G6nX9Ew" type="Property_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V0xeQfSBEea2LN1G6nX9Ew" type="Property_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V0xeQvSBEea2LN1G6nX9Ew" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V0xeQ_SBEea2LN1G6nX9Ew" type="Property_StructureCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_V0xeRPSBEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V0xeRfSBEea2LN1G6nX9Ew"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V06oMPSBEea2LN1G6nX9Ew" type="StereotypeLabel">
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_V06oMfSBEea2LN1G6nX9Ew" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V06oMvSBEea2LN1G6nX9Ew"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V07PQPSBEea2LN1G6nX9Ew" type="StereotypeBrace">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_V07PQfSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_V07PQvSBEea2LN1G6nX9Ew" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V07PQ_SBEea2LN1G6nX9Ew"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V072UPSBEea2LN1G6nX9Ew" type="compartment_shape_display">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_V072UfSBEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V072UvSBEea2LN1G6nX9Ew"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V09EcPSBEea2LN1G6nX9Ew" type="StereotypeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_V09EcfSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_V09EcvSBEea2LN1G6nX9Ew" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V09Ec_SBEea2LN1G6nX9Ew"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_V1CkAPSBEea2LN1G6nX9Ew" type="Port_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V5EIYfSBEea2LN1G6nX9Ew" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V5EIYvSBEea2LN1G6nX9Ew" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V1CkAvSBEea2LN1G6nX9Ew" type="Port_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V1CkA_SBEea2LN1G6nX9Ew" x="-16" y="-1"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V1CkBPSBEea2LN1G6nX9Ew" type="Port_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V1CkBfSBEea2LN1G6nX9Ew" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ExclusionsPorts.uml#_y1QzEPLuEealY9mAivVIZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V1CkAfSBEea2LN1G6nX9Ew" x="121" y="26" width="11" height="11"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_V1DLEPSBEea2LN1G6nX9Ew" type="Port_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V5EIY_SBEea2LN1G6nX9Ew" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V5EIZPSBEea2LN1G6nX9Ew" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V1DLEvSBEea2LN1G6nX9Ew" type="Port_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V1DLE_SBEea2LN1G6nX9Ew" x="-16" y="1"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V1DLFPSBEea2LN1G6nX9Ew" type="Port_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V1DLFfSBEea2LN1G6nX9Ew" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ExclusionsPorts.uml#_0UYccPLuEealY9mAivVIZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V1DLEfSBEea2LN1G6nX9Ew" x="121" y="50" width="11" height="11"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_V1DyIPSBEea2LN1G6nX9Ew" type="Port_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V5EIZfSBEea2LN1G6nX9Ew" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V5EIZvSBEea2LN1G6nX9Ew" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V1DyIvSBEea2LN1G6nX9Ew" type="Port_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V1DyI_SBEea2LN1G6nX9Ew" x="-15"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V1DyJPSBEea2LN1G6nX9Ew" type="Port_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V1DyJfSBEea2LN1G6nX9Ew" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ExclusionsPorts.uml#_1dKCYPLuEealY9mAivVIZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V1DyIfSBEea2LN1G6nX9Ew" x="121" y="72" width="11" height="11"/>
+ </children>
+ <element xmi:type="uml:Property" href="ExclusionsPorts.uml#_VvwbYPSBEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V0w3MfSBEea2LN1G6nX9Ew" x="79" y="68" width="126" height="92"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_V072U_SBEea2LN1G6nX9Ew" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_V072VPSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_V072VvSBEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsPorts.uml#_VvwbYPSBEea2LN1G6nX9Ew"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V072VfSBEea2LN1G6nX9Ew" x="296" y="66"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_V1RNg_SBEea2LN1G6nX9Ew" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_V1RNhPSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_V1RNhvSBEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsPorts.uml#_y1QzEPLuEealY9mAivVIZA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V1RNhfSBEea2LN1G6nX9Ew" x="194" y="-6"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_V1blkPSBEea2LN1G6nX9Ew" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_V1blkfSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_V1blk_SBEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsPorts.uml#_0UYccPLuEealY9mAivVIZA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V1blkvSBEea2LN1G6nX9Ew" x="194" y="-6"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_V1kvg_SBEea2LN1G6nX9Ew" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_V1kvhPSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_V1kvhvSBEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsPorts.uml#_1dKCYPLuEealY9mAivVIZA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V1kvhfSBEea2LN1G6nX9Ew" x="194" y="-6"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Wl71cPSBEea2LN1G6nX9Ew" type="Property_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wpv-cPSBEea2LN1G6nX9Ew" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wpv-cfSBEea2LN1G6nX9Ew" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wl8cgPSBEea2LN1G6nX9Ew" type="Property_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wl8cgfSBEea2LN1G6nX9Ew" type="Property_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Wl8cgvSBEea2LN1G6nX9Ew" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Wl8cg_SBEea2LN1G6nX9Ew" type="Property_StructureCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Wl8chPSBEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wl8chfSBEea2LN1G6nX9Ew"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WmDxQPSBEea2LN1G6nX9Ew" type="StereotypeLabel">
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_WmDxQfSBEea2LN1G6nX9Ew" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WmDxQvSBEea2LN1G6nX9Ew"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WmEYUPSBEea2LN1G6nX9Ew" type="StereotypeBrace">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WmEYUfSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_WmEYUvSBEea2LN1G6nX9Ew" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WmEYU_SBEea2LN1G6nX9Ew"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WmE_YPSBEea2LN1G6nX9Ew" type="compartment_shape_display">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WmE_YfSBEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WmE_YvSBEea2LN1G6nX9Ew"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WmGNhPSBEea2LN1G6nX9Ew" type="StereotypeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WmGNhfSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_WmGNhvSBEea2LN1G6nX9Ew" name="stereotype" stringValue="UMLRealTime::CapsulePart"/>
+ <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_EQwT4EhOEeO0lv5O1DTHOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WmGNh_SBEea2LN1G6nX9Ew"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_WmICsPSBEea2LN1G6nX9Ew" type="Port_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wpv-cvSBEea2LN1G6nX9Ew" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wpv-c_SBEea2LN1G6nX9Ew" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WmICsvSBEea2LN1G6nX9Ew" type="Port_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WmICs_SBEea2LN1G6nX9Ew" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WmICtPSBEea2LN1G6nX9Ew" type="Port_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WmICtfSBEea2LN1G6nX9Ew" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ExclusionsPorts.uml#_0UYccPLuEealY9mAivVIZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WmICsfSBEea2LN1G6nX9Ew" x="-5" y="49" width="11" height="11"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_WmICtvSBEea2LN1G6nX9Ew" type="Port_Shape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wpv-dPSBEea2LN1G6nX9Ew" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wpv-dfSBEea2LN1G6nX9Ew" key="mutable" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WmICuPSBEea2LN1G6nX9Ew" type="Port_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WmICufSBEea2LN1G6nX9Ew" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WmIpwPSBEea2LN1G6nX9Ew" type="Port_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WmIpwfSBEea2LN1G6nX9Ew" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ExclusionsPorts.uml#_y1QzEPLuEealY9mAivVIZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WmICt_SBEea2LN1G6nX9Ew" x="-5" y="27" width="11" height="11"/>
+ </children>
+ <element xmi:type="uml:Property" href="ExclusionsPorts.uml#_Wl3kAPSBEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wl71cfSBEea2LN1G6nX9Ew" x="284" y="68" width="126" height="92"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_WmE_Y_SBEea2LN1G6nX9Ew" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WmE_ZPSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_WmE_ZvSBEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsPorts.uml#_Wl3kAPSBEea2LN1G6nX9Ew"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WmE_ZfSBEea2LN1G6nX9Ew" x="459" y="68"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_WmQlkPSBEea2LN1G6nX9Ew" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WmQlkfSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_WmQlk_SBEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsPorts.uml#_FJv3EPLvEealY9mAivVIZA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WmQlkvSBEea2LN1G6nX9Ew" x="194" y="-6"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VR1JRvSBEea2LN1G6nX9Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VR1JR_SBEea2LN1G6nX9Ew"/>
+ </children>
+ <element xmi:type="uml:Class" href="ExclusionsPorts.uml#_FsSp4PIzEeaR1OInxOMngw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VR1JQfSBEea2LN1G6nX9Ew" x="40" y="40" width="500" height="250"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VSqPsPSBEea2LN1G6nX9Ew" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VSqPsfSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_VSq2wPSBEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="ExclusionsPorts.uml#_FsSp4PIzEeaR1OInxOMngw"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VSqPsvSBEea2LN1G6nX9Ew" x="240" y="40"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_VR0iMfSBEea2LN1G6nX9Ew" name="diagram_compatibility_version" stringValue="1.2.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_VR0iMvSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_VR0iM_SBEea2LN1G6nX9Ew">
+ <owner xmi:type="uml:Class" href="ExclusionsPorts.uml#_FsSp4PIzEeaR1OInxOMngw"/>
+ <configuration xmi:type="configuration:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrusrt.umlrt.tooling.diagram.common/configuration/UMLRT.configuration#_Z79eQHcZEeSnWeKqQOfW2A"/>
+ </styles>
+ <element xmi:type="uml:Class" href="ExclusionsPorts.uml#_FsSp4PIzEeaR1OInxOMngw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_VSq2wfSBEea2LN1G6nX9Ew" type="StereotypeCommentLink" source="_VR1JQPSBEea2LN1G6nX9Ew" target="_VSqPsPSBEea2LN1G6nX9Ew">
+ <styles xmi:type="notation:FontStyle" xmi:id="_VSq2wvSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_VSq2xvSBEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="ExclusionsPorts.uml#_FsSp4PIzEeaR1OInxOMngw"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VSq2w_SBEea2LN1G6nX9Ew" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VSq2xPSBEea2LN1G6nX9Ew"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VSq2xfSBEea2LN1G6nX9Ew"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_V072V_SBEea2LN1G6nX9Ew" type="StereotypeCommentLink" source="_V0w3MPSBEea2LN1G6nX9Ew" target="_V072U_SBEea2LN1G6nX9Ew">
+ <styles xmi:type="notation:FontStyle" xmi:id="_V072WPSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_V08dYvSBEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsPorts.uml#_VvwbYPSBEea2LN1G6nX9Ew"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_V072WfSBEea2LN1G6nX9Ew" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_V08dYPSBEea2LN1G6nX9Ew"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_V08dYfSBEea2LN1G6nX9Ew"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_V1RNh_SBEea2LN1G6nX9Ew" type="StereotypeCommentLink" source="_V1CkAPSBEea2LN1G6nX9Ew" target="_V1RNg_SBEea2LN1G6nX9Ew">
+ <styles xmi:type="notation:FontStyle" xmi:id="_V1RNiPSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_V1R0kvSBEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsPorts.uml#_y1QzEPLuEealY9mAivVIZA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_V1RNifSBEea2LN1G6nX9Ew" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_V1R0kPSBEea2LN1G6nX9Ew"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_V1R0kfSBEea2LN1G6nX9Ew"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_V1bllPSBEea2LN1G6nX9Ew" type="StereotypeCommentLink" source="_V1DLEPSBEea2LN1G6nX9Ew" target="_V1blkPSBEea2LN1G6nX9Ew">
+ <styles xmi:type="notation:FontStyle" xmi:id="_V1bllfSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_V1blmfSBEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsPorts.uml#_0UYccPLuEealY9mAivVIZA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_V1bllvSBEea2LN1G6nX9Ew" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_V1bll_SBEea2LN1G6nX9Ew"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_V1blmPSBEea2LN1G6nX9Ew"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_V1kvh_SBEea2LN1G6nX9Ew" type="StereotypeCommentLink" source="_V1DyIPSBEea2LN1G6nX9Ew" target="_V1kvg_SBEea2LN1G6nX9Ew">
+ <styles xmi:type="notation:FontStyle" xmi:id="_V1kviPSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_V1lWkPSBEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsPorts.uml#_1dKCYPLuEealY9mAivVIZA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_V1kvifSBEea2LN1G6nX9Ew" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_V1kvivSBEea2LN1G6nX9Ew"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_V1kvi_SBEea2LN1G6nX9Ew"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_WmFmcPSBEea2LN1G6nX9Ew" type="StereotypeCommentLink" source="_Wl71cPSBEea2LN1G6nX9Ew" target="_WmE_Y_SBEea2LN1G6nX9Ew">
+ <styles xmi:type="notation:FontStyle" xmi:id="_WmFmcfSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_WmFmdfSBEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Property" href="ExclusionsPorts.uml#_Wl3kAPSBEea2LN1G6nX9Ew"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WmFmcvSBEea2LN1G6nX9Ew" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WmFmc_SBEea2LN1G6nX9Ew"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WmFmdPSBEea2LN1G6nX9Ew"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_WmQllPSBEea2LN1G6nX9Ew" type="StereotypeCommentLink" source="_WmICsPSBEea2LN1G6nX9Ew" target="_WmQlkPSBEea2LN1G6nX9Ew">
+ <styles xmi:type="notation:FontStyle" xmi:id="_WmQllfSBEea2LN1G6nX9Ew"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_WmQlmfSBEea2LN1G6nX9Ew" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Port" href="ExclusionsPorts.uml#_FJv3EPLvEealY9mAivVIZA"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WmQllvSBEea2LN1G6nX9Ew" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WmQll_SBEea2LN1G6nX9Ew"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WmQlmPSBEea2LN1G6nX9Ew"/>
+ </edges>
+</notation:Diagram>
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/ExclusionsPorts.uml b/models/tests/codepattern/structure/ExclusionsPorts/ExclusionsPorts.uml
new file mode 100644
index 0000000..94c94ab
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/ExclusionsPorts.uml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:UMLRealTime="http://www.eclipse.org/papyrus/umlrt" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <uml:Model xmi:id="_3tSqUPIwEeaR1OInxOMngw" name="ExclusionsPorts">
+ <packagedElement xmi:type="uml:Package" xmi:id="_D9ssAPIxEeaR1OInxOMngw" name="Protocol1">
+ <packagedElement xmi:type="uml:Collaboration" xmi:id="_D9nMcPIxEeaR1OInxOMngw" name="Protocol1">
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_D95gUPIxEeaR1OInxOMngw" client="_D9nMcPIxEeaR1OInxOMngw" supplier="_D9yLkPIxEeaR1OInxOMngw" contract="_D9yLkPIxEeaR1OInxOMngw"/>
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_D-D4YPIxEeaR1OInxOMngw" client="_D9nMcPIxEeaR1OInxOMngw" supplier="_D-A1EPIxEeaR1OInxOMngw" contract="_D-A1EPIxEeaR1OInxOMngw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_D9yLkPIxEeaR1OInxOMngw" name="Protocol1"/>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_D96ucPIxEeaR1OInxOMngw" name="Protocol1~"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_D9-_4PIxEeaR1OInxOMngw" client="_D9nMcPIxEeaR1OInxOMngw" supplier="_D96ucPIxEeaR1OInxOMngw"/>
+ <packagedElement xmi:type="uml:AnyReceiveEvent" xmi:id="_D9_m8PIxEeaR1OInxOMngw" name="*"/>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_D-A1EPIxEeaR1OInxOMngw" name="Protocol1IO"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_D-FGgPIxEeaR1OInxOMngw" client="_D9nMcPIxEeaR1OInxOMngw" supplier="_D-A1EPIxEeaR1OInxOMngw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_FsSp4PIzEeaR1OInxOMngw" name="Top" isActive="true">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_VvwbYPSBEea2LN1G6nX9Ew" name="a" visibility="protected" type="_xfxm0PLuEealY9mAivVIZA" isOrdered="true" aggregation="composite"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Wl3kAPSBEea2LN1G6nX9Ew" name="b" visibility="protected" type="_A-3LAPLvEealY9mAivVIZA" isOrdered="true" aggregation="composite"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_xfxm0PLuEealY9mAivVIZA" name="A" isActive="true">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_y1QzEPLuEealY9mAivVIZA" name="p" visibility="public" type="_D9nMcPIxEeaR1OInxOMngw" isOrdered="true" aggregation="composite" isBehavior="true" isService="true"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_0UYccPLuEealY9mAivVIZA" name="q" visibility="public" type="_D9nMcPIxEeaR1OInxOMngw" isOrdered="true" aggregation="composite" isBehavior="true" isService="true"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_1dKCYPLuEealY9mAivVIZA" name="r" visibility="public" type="_D9nMcPIxEeaR1OInxOMngw" isOrdered="true" aggregation="composite" isBehavior="true" isService="true"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_A-3LAPLvEealY9mAivVIZA" name="B" isActive="true">
+ <generalization xmi:type="uml:Generalization" xmi:id="_FJjp0PLvEealY9mAivVIZA" general="_xfxm0PLuEealY9mAivVIZA"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_FJv3EPLvEealY9mAivVIZA" redefinedProperty="_0UYccPLuEealY9mAivVIZA" redefinedPort="_0UYccPLuEealY9mAivVIZA"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_FJ0IgPLvEealY9mAivVIZA" redefinedProperty="_1dKCYPLuEealY9mAivVIZA" redefinedPort="_1dKCYPLuEealY9mAivVIZA"/>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_3yTtMPIwEeaR1OInxOMngw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3yaa4PIwEeaR1OInxOMngw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/umlrt#/"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_RT_PROFILE/uml-rt.profile.uml#_1h74oEeVEeO0lv5O1DTHOQ"/>
+ </profileApplication>
+ </uml:Model>
+ <UMLRealTime:ProtocolContainer xmi:id="_D9vIQPIxEeaR1OInxOMngw" base_Package="_D9ssAPIxEeaR1OInxOMngw"/>
+ <UMLRealTime:RTMessageSet xmi:id="_D90n0PIxEeaR1OInxOMngw" base_Interface="_D9yLkPIxEeaR1OInxOMngw"/>
+ <UMLRealTime:RTMessageSet xmi:id="_D98joPIxEeaR1OInxOMngw" base_Interface="_D96ucPIxEeaR1OInxOMngw" rtMsgKind="out"/>
+ <UMLRealTime:RTMessageSet xmi:id="_D-CqQPIxEeaR1OInxOMngw" base_Interface="_D-A1EPIxEeaR1OInxOMngw" rtMsgKind="inOut"/>
+ <UMLRealTime:Protocol xmi:id="_D-G7sPIxEeaR1OInxOMngw" base_Collaboration="_D9nMcPIxEeaR1OInxOMngw"/>
+ <UMLRealTime:Capsule xmi:id="_FsgFQPIzEeaR1OInxOMngw" base_Class="_FsSp4PIzEeaR1OInxOMngw"/>
+ <UMLRealTime:Capsule xmi:id="_xf8l8PLuEealY9mAivVIZA" base_Class="_xfxm0PLuEealY9mAivVIZA"/>
+ <UMLRealTime:RTPort xmi:id="_y1TPUPLuEealY9mAivVIZA" isPublish="false" isWired="true" base_Port="_y1QzEPLuEealY9mAivVIZA"/>
+ <UMLRealTime:RTPort xmi:id="_0Ua4sPLuEealY9mAivVIZA" isPublish="false" isWired="true" base_Port="_0UYccPLuEealY9mAivVIZA"/>
+ <UMLRealTime:RTPort xmi:id="_1dL3kPLuEealY9mAivVIZA" isPublish="false" isWired="true" base_Port="_1dKCYPLuEealY9mAivVIZA"/>
+ <UMLRealTime:Capsule xmi:id="_A-_G0PLvEealY9mAivVIZA" base_Class="_A-3LAPLvEealY9mAivVIZA"/>
+ <UMLRealTime:RTPort xmi:id="_FJxFMPLvEealY9mAivVIZA" isNotification="true" base_Port="_FJv3EPLvEealY9mAivVIZA"/>
+ <UMLRealTime:RTRedefinedElement xmi:id="_Ik6WYPLvEealY9mAivVIZA" base_RedefinableElement="_FJv3EPLvEealY9mAivVIZA" rootFragment="_0UYccPLuEealY9mAivVIZA"/>
+ <UMLRealTime:RTRedefinedElement xmi:id="_KDo-MPLvEealY9mAivVIZA" base_RedefinableElement="_FJ0IgPLvEealY9mAivVIZA"/>
+ <UMLRealTime:RTPort xmi:id="_FJ0vkPLvEealY9mAivVIZA" base_Port="_FJ0IgPLvEealY9mAivVIZA"/>
+ <UMLRealTime:CapsulePart xmi:id="_VzcokPSBEea2LN1G6nX9Ew" base_Property="_VvwbYPSBEea2LN1G6nX9Ew"/>
+ <UMLRealTime:CapsulePart xmi:id="_Wl5ZMPSBEea2LN1G6nX9Ew" base_Property="_Wl3kAPSBEea2LN1G6nX9Ew"/>
+</xmi:XMI>
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/expected_src/A.cc b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/A.cc
new file mode 100644
index 0000000..8d747b6
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/A.cc
@@ -0,0 +1,135 @@
+
+#include "A.hh"
+
+#include <cstddef>
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcommsportrole.hh"
+#include "umlrtframeservice.hh"
+#include "umlrtslot.hh"
+class UMLRTRtsInterface;
+struct UMLRTCommsPort;
+
+Capsule_A::Capsule_A( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat )
+: UMLRTCapsule( NULL, cd, st, border, internal, isStat )
+, p( borderPorts[borderport_p] )
+, q( borderPorts[borderport_q] )
+, r( borderPorts[borderport_r] )
+{
+}
+
+
+
+
+
+
+
+void Capsule_A::bindPort( bool isBorder, int portId, int index )
+{
+ if( isBorder )
+ switch( portId )
+ {
+ case borderport_p:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_p, index, true );
+ break;
+ case borderport_q:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_q, index, true );
+ break;
+ case borderport_r:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_r, index, true );
+ break;
+ }
+}
+
+void Capsule_A::unbindPort( bool isBorder, int portId, int index )
+{
+ if( isBorder )
+ switch( portId )
+ {
+ case borderport_p:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_p, index, false );
+ UMLRTFrameService::disconnectPort( borderPorts[borderport_p], index );
+ break;
+ case borderport_q:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_q, index, false );
+ UMLRTFrameService::disconnectPort( borderPorts[borderport_q], index );
+ break;
+ case borderport_r:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_r, index, false );
+ UMLRTFrameService::disconnectPort( borderPorts[borderport_r], index );
+ break;
+ }
+}
+
+void Capsule_A::initialize( const UMLRTMessage & msg )
+{
+}
+
+void Capsule_A::inject( const UMLRTMessage & msg )
+{
+}
+
+
+static const UMLRTCommsPortRole portroles_border[] =
+{
+ {
+ Capsule_A::port_p,
+ "Protocol1",
+ "p",
+ "",
+ 1,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ },
+ {
+ Capsule_A::port_q,
+ "Protocol1",
+ "q",
+ "",
+ 1,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ },
+ {
+ Capsule_A::port_r,
+ "Protocol1",
+ "r",
+ "",
+ 1,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ }
+};
+
+static void instantiate_A( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts )
+{
+ slot->capsule = new Capsule_A( &A, slot, borderPorts, NULL, false );
+}
+
+const UMLRTCapsuleClass A =
+{
+ "A",
+ NULL,
+ instantiate_A,
+ 0,
+ NULL,
+ 3,
+ portroles_border,
+ 0,
+ NULL
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/expected_src/A.hh b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/A.hh
new file mode 100644
index 0000000..54705c5
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/A.hh
@@ -0,0 +1,46 @@
+
+#ifndef A_HH
+#define A_HH
+
+#include "Protocol1.hh"
+#include "umlrtcapsule.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtmessage.hh"
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+class Capsule_A : public UMLRTCapsule
+{
+public:
+ Capsule_A( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat );
+protected:
+ Protocol1::Base p;
+public:
+ enum BorderPortId
+ {
+ borderport_p,
+ borderport_q,
+ borderport_r
+ };
+protected:
+ Protocol1::Base q;
+ Protocol1::Base r;
+public:
+ enum PartId
+ {
+ };
+ enum PortId
+ {
+ port_p,
+ port_q,
+ port_r
+ };
+ virtual void bindPort( bool isBorder, int portId, int index );
+ virtual void unbindPort( bool isBorder, int portId, int index );
+ virtual void initialize( const UMLRTMessage & msg );
+ virtual void inject( const UMLRTMessage & msg );
+};
+extern const UMLRTCapsuleClass A;
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/expected_src/B.cc b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/B.cc
new file mode 100644
index 0000000..a325762
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/B.cc
@@ -0,0 +1,113 @@
+
+#include "B.hh"
+
+#include "A.hh"
+#include "umlrtslot.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcommsportrole.hh"
+#include "umlrtframeservice.hh"
+#include <cstddef>
+class UMLRTRtsInterface;
+struct UMLRTCommsPort;
+
+Capsule_B::Capsule_B( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat )
+: Capsule_A( cd, st, border, internal, isStat )
+, q( borderPorts[borderport_q] )
+, p( borderPorts[borderport_p] )
+{
+}
+
+
+
+
+
+
+void Capsule_B::bindPort( bool isBorder, int portId, int index )
+{
+ if( isBorder )
+ switch( portId )
+ {
+ case borderport_q:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_q, index, true );
+ break;
+ case borderport_p:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_p, index, true );
+ break;
+ }
+}
+
+void Capsule_B::unbindPort( bool isBorder, int portId, int index )
+{
+ if( isBorder )
+ switch( portId )
+ {
+ case borderport_q:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_q, index, false );
+ UMLRTFrameService::disconnectPort( borderPorts[borderport_q], index );
+ break;
+ case borderport_p:
+ UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_p, index, false );
+ UMLRTFrameService::disconnectPort( borderPorts[borderport_p], index );
+ break;
+ }
+}
+
+void Capsule_B::initialize( const UMLRTMessage & msg )
+{
+}
+
+void Capsule_B::inject( const UMLRTMessage & msg )
+{
+}
+
+
+static const UMLRTCommsPortRole portroles_border[] =
+{
+ {
+ Capsule_B::port_q,
+ "Protocol1",
+ "q",
+ "",
+ 1,
+ true,
+ false,
+ false,
+ true,
+ false,
+ false,
+ true
+ },
+ {
+ Capsule_B::port_p,
+ "Protocol1",
+ "p",
+ "",
+ 1,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ }
+};
+
+static void instantiate_B( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts )
+{
+ slot->capsule = new Capsule_B( &B, slot, borderPorts, NULL, false );
+}
+
+const UMLRTCapsuleClass B =
+{
+ "B",
+ &A,
+ instantiate_B,
+ 0,
+ NULL,
+ 2,
+ portroles_border,
+ 0,
+ NULL
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/expected_src/B.hh b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/B.hh
new file mode 100644
index 0000000..c056d04
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/B.hh
@@ -0,0 +1,44 @@
+
+#ifndef B_HH
+#define B_HH
+
+#include "A.hh"
+#include "Protocol1.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtmessage.hh"
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+class Capsule_B : public Capsule_A
+{
+public:
+ Capsule_B( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat );
+protected:
+ Protocol1::Base q;
+public:
+ enum BorderPortId
+ {
+ borderport_q,
+ borderport_p
+ };
+protected:
+ Protocol1::Base p;
+public:
+ enum PartId
+ {
+ };
+ enum PortId
+ {
+ port_p,
+ port_q,
+ port_r
+ };
+ virtual void bindPort( bool isBorder, int portId, int index );
+ virtual void unbindPort( bool isBorder, int portId, int index );
+ virtual void initialize( const UMLRTMessage & msg );
+ virtual void inject( const UMLRTMessage & msg );
+};
+extern const UMLRTCapsuleClass B;
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/expected_src/CMakeLists.txt b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/CMakeLists.txt
new file mode 100644
index 0000000..d45117a
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/CMakeLists.txt
@@ -0,0 +1,36 @@
+# Generated 2017-02-16 14:52:46
+
+cmake_minimum_required(VERSION 2.8.7)
+set(TARGET TopMain)
+project(${TARGET})
+
+# require location of supporting RTS
+if (NOT UMLRTS_ROOT)
+ if (DEFINED ENV{UMLRTS_ROOT})
+ set(UMLRTS_ROOT $ENV{UMLRTS_ROOT})
+ else ()
+ set(UMLRTS_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/umlrt.rts)
+ endif ()
+endif ()
+
+# setup primary envars - provides tooling config
+include(${UMLRTS_ROOT}/build/buildenv.cmake)
+
+# model sources
+set(SRCS TopMain.cc Protocol1.cc A.cc B.cc Top.cc TopControllers.cc )
+
+# specify target
+add_executable(${TARGET} ${SRCS})
+
+# setup lib dependency support after defining TARGET
+include(${UMLRTS_ROOT}/build/rtslib.cmake)
+
+# compiler parameters
+set_target_properties(${TARGET} PROPERTIES COMPILE_OPTIONS "${COPTS}")
+set_target_properties(${TARGET} PROPERTIES COMPILE_DEFINITIONS "${CDEFS}")
+include_directories(${INCS})
+
+# linker parameters
+set_target_properties(${TARGET} PROPERTIES CMAKE_EXE_LINKER_FLAGS "${LOPTS}")
+target_link_libraries(${TARGET} ${LIBS})
+
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Makefile b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Makefile
new file mode 100644
index 0000000..0bcbd22
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Makefile
@@ -0,0 +1,11 @@
+##################################################
+# Default makefile
+# Redirect make to target makefile
+##################################################
+
+all:
+ make -f MakefileTop.mk all
+clean:
+ make -f MakefileTop.mk clean
+.PHONY:
+ make -f MakefileTop.mk all clean
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/expected_src/MakefileTop.mk b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/MakefileTop.mk
new file mode 100644
index 0000000..b62ddd0
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/MakefileTop.mk
@@ -0,0 +1,49 @@
+# set default value for TARGETOS if is it not defined
+ifeq ($(TARGETOS), )
+$(warning warning: TARGETOS not defined. Choosing linux)
+TARGETOS=linux
+endif
+
+# set default value for BUILDTOOLS if is it not defined
+ifeq ($(BUILDTOOLS), )
+$(warning warning: BUILDTOOLS not defined. Choosing x86-gcc-4.6.3)
+BUILDTOOLS=x86-gcc-4.6.3
+endif
+
+# Location of RTS root.
+UMLRTS_ROOT ?= ./umlrt.rts
+
+CONFIG=$(TARGETOS).$(BUILDTOOLS)
+
+# Destination directory for the RTS services library.
+LIBDEST=$(UMLRTS_ROOT)/lib/$(CONFIG)
+
+include $(UMLRTS_ROOT)/build/host/host.mk
+include $(UMLRTS_ROOT)/build/buildtools/$(BUILDTOOLS)/buildtools.mk
+
+LD_PATHS=$(LIBDEST)
+CC_INCLUDES+=$(UMLRTS_ROOT)/include
+
+CC_DEFINES:=$(foreach d, $(CC_DEFINES), $(CC_DEF)$d)
+CC_INCLUDES:=$(foreach i, $(CC_INCLUDES), $(CC_INC)$i)
+LD_LIBS:=$(foreach i, $(LD_LIBS), $(LD_LIB)$i)
+LD_PATHS:=$(foreach i, $(LD_PATHS), $(LD_LIBPATH)$i)
+
+SRCS = TopMain.cc Protocol1.cc A.cc B.cc Top.cc TopControllers.cc
+OBJS = $(subst $(CC_EXT),$(OBJ_EXT),$(SRCS))
+
+MAIN = TopMain$(EXE_EXT)
+
+all: $(MAIN)
+
+$(MAIN): $(OBJS) $(UMLRTS_ROOT)/lib/$(CONFIG)/$(LIB_PRFX)rts$(LIB_EXT)
+ $(LD) $(LD_FLAGS) $(OBJS) $(LD_PATHS) $(LD_LIBS) $(LD_OUT)$@
+
+%$(OBJ_EXT) : %$(CC_EXT)
+ $(CC) $< $(CC_FLAGS) $(CC_DEFINES) $(CC_INCLUDES) $(CC_OUT)$@
+
+clean :
+ @echo $(RM) main$(EXE_EXT) *$(OBJ_EXT) *$(DEP_EXT) $(DBG_FILES)
+ @$(RM) main$(EXE_EXT) *$(OBJ_EXT) *$(DEP_EXT) $(DBG_FILES)
+
+.PHONY: all clean
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Protocol1.cc b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Protocol1.cc
new file mode 100644
index 0000000..08595db
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Protocol1.cc
@@ -0,0 +1,16 @@
+
+#include "Protocol1.hh"
+
+struct UMLRTCommsPort;
+
+Protocol1::Base::Base( const UMLRTCommsPort * & srcPort )
+: UMLRTProtocol( srcPort )
+{
+}
+
+Protocol1::Conj::Conj( const UMLRTCommsPort * & srcPort )
+: UMLRTProtocol( srcPort )
+{
+}
+
+
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Protocol1.hh b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Protocol1.hh
new file mode 100644
index 0000000..f917c8f
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Protocol1.hh
@@ -0,0 +1,23 @@
+
+#ifndef PROTOCOL1_HH
+#define PROTOCOL1_HH
+
+#include "umlrtprotocol.hh"
+struct UMLRTCommsPort;
+
+namespace Protocol1
+{
+ class Base : public UMLRTProtocol
+ {
+ public:
+ Base( const UMLRTCommsPort * & srcPort );
+ };
+ class Conj : public UMLRTProtocol
+ {
+ public:
+ Conj( const UMLRTCommsPort * & srcPort );
+ };
+};
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Top-connections.log b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Top-connections.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Top-connections.log
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Top.cc b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Top.cc
new file mode 100644
index 0000000..ce5dcb2
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Top.cc
@@ -0,0 +1,81 @@
+
+#include "Top.hh"
+
+#include "A.hh"
+#include "B.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcapsulepart.hh"
+#include "umlrtslot.hh"
+#include <cstddef>
+#include "umlrtcapsulerole.hh"
+#include "umlrtframeservice.hh"
+class UMLRTRtsInterface;
+struct UMLRTCommsPort;
+
+Capsule_Top::Capsule_Top( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat )
+: UMLRTCapsule( NULL, cd, st, border, internal, isStat )
+, a( &slot->parts[part_a] )
+, b( &slot->parts[part_b] )
+{
+}
+
+
+
+
+void Capsule_Top::bindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_Top::unbindPort( bool isBorder, int portId, int index )
+{
+}
+
+void Capsule_Top::initialize( const UMLRTMessage & msg )
+{
+}
+
+void Capsule_Top::inject( const UMLRTMessage & msg )
+{
+}
+
+
+static const UMLRTCapsuleRole roles[] =
+{
+ {
+ "a",
+ &A,
+ 1,
+ 1,
+ false,
+ false
+ },
+ {
+ "b",
+ &B,
+ 1,
+ 1,
+ false,
+ false
+ }
+};
+
+static void instantiate_Top( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts )
+{
+ A.instantiate( NULL, slot->parts[Capsule_Top::part_a].slots[0], UMLRTFrameService::createBorderPorts( slot->parts[Capsule_Top::part_a].slots[0], A.numPortRolesBorder ) );
+ B.instantiate( NULL, slot->parts[Capsule_Top::part_b].slots[0], UMLRTFrameService::createBorderPorts( slot->parts[Capsule_Top::part_b].slots[0], B.numPortRolesBorder ) );
+ slot->capsule = new Capsule_Top( &Top, slot, borderPorts, NULL, false );
+}
+
+const UMLRTCapsuleClass Top =
+{
+ "Top",
+ NULL,
+ instantiate_Top,
+ 2,
+ roles,
+ 0,
+ NULL,
+ 0,
+ NULL
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Top.hh b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Top.hh
new file mode 100644
index 0000000..2c5910f
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/Top.hh
@@ -0,0 +1,33 @@
+
+#ifndef TOP_HH
+#define TOP_HH
+
+#include "umlrtcapsule.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtmessage.hh"
+struct UMLRTCapsulePart;
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+class Capsule_Top : public UMLRTCapsule
+{
+public:
+ Capsule_Top( const UMLRTCapsuleClass * cd, UMLRTSlot * st, const UMLRTCommsPort * * border, const UMLRTCommsPort * * internal, bool isStat );
+ enum PartId
+ {
+ part_a,
+ part_b
+ };
+protected:
+ const UMLRTCapsulePart * const a;
+ const UMLRTCapsulePart * const b;
+public:
+ virtual void bindPort( bool isBorder, int portId, int index );
+ virtual void unbindPort( bool isBorder, int portId, int index );
+ virtual void initialize( const UMLRTMessage & msg );
+ virtual void inject( const UMLRTMessage & msg );
+};
+extern const UMLRTCapsuleClass Top;
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/expected_src/TopControllers.cc b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/TopControllers.cc
new file mode 100644
index 0000000..b1d7d1b
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/TopControllers.cc
@@ -0,0 +1,253 @@
+
+#include "TopControllers.hh"
+
+#include "A.hh"
+#include "B.hh"
+#include "Top.hh"
+#include "umlrtcapsuleclass.hh"
+#include "umlrtcapsulepart.hh"
+#include "umlrtcommsport.hh"
+#include "umlrtcommsportfarend.hh"
+#include "umlrtcontroller.hh"
+#include "umlrtslot.hh"
+#include <cstddef>
+
+
+static UMLRTController DefaultController_( "DefaultController" );
+
+UMLRTController * DefaultController = &DefaultController_;
+
+static Capsule_Top top( &Top, &Top_slots[InstId_Top], NULL, NULL, true );
+
+static UMLRTSlot * slots_Top[] =
+{
+ &Top_slots[InstId_Top_a],
+ &Top_slots[InstId_Top_b]
+};
+
+static UMLRTCapsulePart parts_Top[] =
+{
+ {
+ &Top,
+ Capsule_Top::part_a,
+ 1,
+ &slots_Top[0]
+ },
+ {
+ &Top,
+ Capsule_Top::part_b,
+ 1,
+ &slots_Top[1]
+ }
+};
+
+static UMLRTCommsPortFarEnd borderfarEndList_Top_a[] =
+{
+ {
+ 0,
+ NULL
+ },
+ {
+ 0,
+ NULL
+ },
+ {
+ 0,
+ NULL
+ }
+};
+
+UMLRTCommsPort borderports_Top_a[] =
+{
+ {
+ &A,
+ Capsule_A::borderport_p,
+ &Top_slots[InstId_Top_a],
+ 1,
+ borderfarEndList_Top_a,
+ NULL,
+ NULL,
+ "",
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ },
+ {
+ &A,
+ Capsule_A::borderport_q,
+ &Top_slots[InstId_Top_a],
+ 1,
+ &borderfarEndList_Top_a[1],
+ NULL,
+ NULL,
+ "",
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ },
+ {
+ &A,
+ Capsule_A::borderport_r,
+ &Top_slots[InstId_Top_a],
+ 1,
+ &borderfarEndList_Top_a[2],
+ NULL,
+ NULL,
+ "",
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ }
+};
+
+static const UMLRTCommsPort * borderports_Top_a_ptrs[] =
+{
+ &borderports_Top_a[0],
+ &borderports_Top_a[1],
+ &borderports_Top_a[2]
+};
+
+static Capsule_A top_a( &A, &Top_slots[InstId_Top_a], borderports_Top_a_ptrs, NULL, true );
+
+static UMLRTCommsPortFarEnd borderfarEndList_Top_b[] =
+{
+ {
+ 0,
+ NULL
+ },
+ {
+ 0,
+ NULL
+ }
+};
+
+UMLRTCommsPort borderports_Top_b[] =
+{
+ {
+ &B,
+ Capsule_B::borderport_q,
+ &Top_slots[InstId_Top_b],
+ 1,
+ borderfarEndList_Top_b,
+ NULL,
+ NULL,
+ "",
+ true,
+ true,
+ true,
+ false,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ },
+ {
+ &B,
+ Capsule_B::borderport_p,
+ &Top_slots[InstId_Top_b],
+ 1,
+ &borderfarEndList_Top_b[1],
+ NULL,
+ NULL,
+ "",
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true
+ }
+};
+
+static const UMLRTCommsPort * borderports_Top_b_ptrs[] =
+{
+ &borderports_Top_b[0],
+ &borderports_Top_b[1]
+};
+
+static Capsule_B top_b( &B, &Top_slots[InstId_Top_b], borderports_Top_b_ptrs, NULL, true );
+
+UMLRTSlot Top_slots[] =
+{
+ {
+ "Top",
+ 0,
+ &Top,
+ NULL,
+ 0,
+ &top,
+ &DefaultController_,
+ 2,
+ parts_Top,
+ 0,
+ NULL,
+ NULL,
+ true,
+ false
+ },
+ {
+ "Top.a",
+ 0,
+ &A,
+ &Top,
+ Capsule_Top::part_a,
+ &top_a,
+ &DefaultController_,
+ 0,
+ NULL,
+ 3,
+ borderports_Top_a,
+ NULL,
+ true,
+ false
+ },
+ {
+ "Top.b",
+ 0,
+ &B,
+ &Top,
+ Capsule_Top::part_b,
+ &top_b,
+ &DefaultController_,
+ 0,
+ NULL,
+ 2,
+ borderports_Top_b,
+ NULL,
+ true,
+ false
+ }
+};
+
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/expected_src/TopControllers.hh b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/TopControllers.hh
new file mode 100644
index 0000000..8c7f55b
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/TopControllers.hh
@@ -0,0 +1,21 @@
+
+#ifndef TOPCONTROLLERS_HH
+#define TOPCONTROLLERS_HH
+
+class UMLRTController;
+struct UMLRTCommsPort;
+struct UMLRTSlot;
+
+enum CapsuleInstanceId
+{
+ InstId_Top,
+ InstId_Top_a,
+ InstId_Top_b
+};
+extern UMLRTController * DefaultController;
+extern UMLRTCommsPort borderports_Top_a[];
+extern UMLRTCommsPort borderports_Top_b[];
+extern UMLRTSlot Top_slots[];
+
+#endif
+
diff --git a/models/tests/codepattern/structure/ExclusionsPorts/expected_src/TopMain.cc b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/TopMain.cc
new file mode 100644
index 0000000..79261c7
--- /dev/null
+++ b/models/tests/codepattern/structure/ExclusionsPorts/expected_src/TopMain.cc
@@ -0,0 +1,38 @@
+#include "umlrtmain.hh"
+
+#include "umlrtcontroller.hh"
+#include "TopControllers.hh"
+#include "umlrtcapsuletocontrollermap.hh"
+#include "umlrtmessagepool.hh"
+#include "umlrtsignalelementpool.hh"
+#include "umlrttimerpool.hh"
+#include "umlrtuserconfig.hh"
+#include <stdio.h>
+
+static UMLRTSignalElement signalElementBuffer[USER_CONFIG_SIGNAL_ELEMENT_POOL_SIZE];
+static UMLRTSignalElementPool signalElementPool( signalElementBuffer, USER_CONFIG_SIGNAL_ELEMENT_POOL_SIZE );
+
+static UMLRTMessage messageBuffer[USER_CONFIG_MESSAGE_POOL_SIZE];
+static UMLRTMessagePool messagePool( messageBuffer, USER_CONFIG_MESSAGE_POOL_SIZE );
+
+static UMLRTTimer timers[USER_CONFIG_TIMER_POOL_SIZE];
+static UMLRTTimerPool timerPool( timers, USER_CONFIG_TIMER_POOL_SIZE );
+
+int main( int argc, char * argv[] )
+{
+ UMLRTController::initializePools( &signalElementPool, &messagePool, &timerPool );
+ UMLRTMain::setArgs( argc, argv );
+ UMLRTCapsuleToControllerMap::setDefaultSlotList( Top_slots, 3 );
+
+ if( ! UMLRTMain::targetStartup() )
+ return EXIT_FAILURE;
+
+ DefaultController->spawn();
+
+ if( ! UMLRTMain::mainLoop() )
+ return UMLRTMain::targetShutdown( false );
+
+ DefaultController->join();
+
+ return UMLRTMain::targetShutdown( true );
+}
diff --git a/models/tests/executable/PingPong/expected_src/CMakeLists.txt b/models/tests/executable/PingPong/expected_src/CMakeLists.txt
index 7f55fe0..9d67a2b 100644
--- a/models/tests/executable/PingPong/expected_src/CMakeLists.txt
+++ b/models/tests/executable/PingPong/expected_src/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Generated 2017-02-10 17:41:29
+# Generated 2017-02-16 14:58:01
cmake_minimum_required(VERSION 2.8.7)
set(TARGET TopMain)
diff --git a/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp.profile/META-INF/MANIFEST.MF b/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp.profile/META-INF/MANIFEST.MF
index 16abf01..a319b69 100644
--- a/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp.profile/META-INF/MANIFEST.MF
+++ b/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp.profile/META-INF/MANIFEST.MF
@@ -8,7 +8,7 @@
org.eclipse.emf.ecore;bundle-version="2.12.0";visibility:=reexport,
org.eclipse.papyrusrt.xtumlrt.common.model;bundle-version="0.8.0",
org.eclipse.papyrusrt.xtumlrt.external;bundle-version="0.8.0",
- org.eclipse.papyrusrt.xtumlrt.trans.from.uml;bundle-version="0.8.0",
+ org.eclipse.papyrusrt.xtumlrt.util;bundle-version="0.8.0",
org.eclipse.uml2.types;bundle-version="2.0.0";visibility:=reexport,
org.eclipse.uml2.uml;bundle-version="5.2.0";visibility:=reexport,
org.eclipse.xtend.lib;bundle-version="2.10.0",
diff --git a/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp.profile/src/org/eclipse/papyrusrt/codegen/cpp/profile/facade/RTCppGenerationProperties.xtend b/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp.profile/src/org/eclipse/papyrusrt/codegen/cpp/profile/facade/RTCppGenerationProperties.xtend
index 6911778..1e9bd60 100644
--- a/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp.profile/src/org/eclipse/papyrusrt/codegen/cpp/profile/facade/RTCppGenerationProperties.xtend
+++ b/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp.profile/src/org/eclipse/papyrusrt/codegen/cpp/profile/facade/RTCppGenerationProperties.xtend
@@ -14,7 +14,7 @@
import org.eclipse.papyrusrt.codegen.cpp.profile.RTCppProperties.InitializationKind
import org.eclipse.papyrusrt.codegen.cpp.profile.RTCppProperties.OperationKind
import org.eclipse.papyrusrt.xtumlrt.common.CommonElement
-import org.eclipse.papyrusrt.xtumlrt.trans.from.uml.GenerationProperties
+import org.eclipse.papyrusrt.xtumlrt.util.XTUMLRTAnnotations
/**
* This class provides a facade to the stereotypes in the profile so that they can be easily accessed from any
@@ -22,7 +22,7 @@
*
* @author Ernesto Posse
*/
-class RTCppGenerationProperties extends GenerationProperties
+class RTCppGenerationProperties extends XTUMLRTAnnotations
{
static val ALL_CLASS_STEREOTYPES =
@@ -63,7 +63,7 @@
static def getArtifactProperties( CommonElement element )
{
- element?.allGenProperties?.findFirst [ it.isArtifactProperties ]
+ element?.allAnnotations?.findFirst [ it.isArtifactProperties ]
}
static def getArtifactPropIncludeFile( CommonElement element )
@@ -78,7 +78,7 @@
static def getAttributeProperties( CommonElement element )
{
- element?.allGenProperties?.findFirst [ it.isAttributeProperties ]
+ element?.allAnnotations?.findFirst [ it.isAttributeProperties ]
}
static def getAttributePropKind( CommonElement element )
@@ -125,7 +125,7 @@
static def getClassGenerationProperties( CommonElement element )
{
- element?.allGenProperties?.findFirst [ it.isClassGenerationProperties ]
+ element?.allAnnotations?.findFirst [ it.isClassGenerationProperties ]
}
static def getClassGenerationPropGenerateStateMachine( CommonElement element )
@@ -175,7 +175,7 @@
static def getClassProperties( CommonElement element )
{
- element?.allGenProperties?.findFirst [ it.isClassProperties ]
+ element?.allAnnotations?.findFirst [ it.isClassProperties ]
}
static def getClassPropPrivateDeclarations( CommonElement element )
@@ -195,7 +195,7 @@
static def getCppFileProperties( CommonElement element )
{
- element?.allGenProperties?.findFirst [ it.isCppFileProperties ]
+ element?.allAnnotations?.findFirst [ it.isCppFileProperties ]
}
static def getCppFileHeaderPreface( CommonElement element )
@@ -220,7 +220,7 @@
static def getDependencyProperties( CommonElement element )
{
- element?.allGenProperties?.findFirst [ it.isDependencyProperties ]
+ element?.allAnnotations?.findFirst [ it.isDependencyProperties ]
}
static def getDependencyPropKindInHeader( CommonElement element )
@@ -237,7 +237,7 @@
static def getFileGenerationProperties( CommonElement element )
{
- element?.allGenProperties?.findFirst [ it.isFileGenerationProperties ]
+ element?.allAnnotations?.findFirst [ it.isFileGenerationProperties ]
}
static def getFileGenerationPropGenerateHeader( CommonElement element )
@@ -252,7 +252,7 @@
static def getGeneralizationProperties( CommonElement element )
{
- element?.allGenProperties?.findFirst [ it.isGeneralizationProperties ]
+ element?.allAnnotations?.findFirst [ it.isGeneralizationProperties ]
}
static def getGeneralizationPropVirtual( CommonElement element )
@@ -262,7 +262,7 @@
static def getGenerationProperties( CommonElement element )
{
- element?.allGenProperties?.findFirst [ it.isGenerationProperties ]
+ element?.allAnnotations?.findFirst [ it.isGenerationProperties ]
}
static def getGenerationPropGenerate( CommonElement element )
@@ -272,7 +272,7 @@
static def getOperationProperties( CommonElement element )
{
- element?.allGenProperties?.findFirst [ it.isOperationProperties ]
+ element?.allAnnotations?.findFirst [ it.isOperationProperties ]
}
static def getOperationPropKind( CommonElement element )
@@ -298,7 +298,7 @@
static def getParameterProperties( CommonElement element )
{
- element?.allGenProperties?.findFirst [ it.isParameterProperties ]
+ element?.allAnnotations?.findFirst [ it.isParameterProperties ]
}
static def getParameterPropType( CommonElement element )
@@ -323,7 +323,7 @@
static def getPassiveClassProperties( CommonElement element )
{
- element?.allGenProperties?.findFirst [ it.isPassiveClassProperties ]
+ element?.allAnnotations?.findFirst [ it.isPassiveClassProperties ]
}
static def getPassiveClassPropKind( CommonElement element )
diff --git a/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp/src/org/eclipse/papyrusrt/codegen/cpp/validation/PostUML2xtumlrtValidator.xtend b/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp/src/org/eclipse/papyrusrt/codegen/cpp/validation/PostUML2xtumlrtValidator.xtend
index f7f2723..4ff3405 100644
--- a/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp/src/org/eclipse/papyrusrt/codegen/cpp/validation/PostUML2xtumlrtValidator.xtend
+++ b/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp/src/org/eclipse/papyrusrt/codegen/cpp/validation/PostUML2xtumlrtValidator.xtend
@@ -27,6 +27,7 @@
import org.eclipse.uml2.uml.Pseudostate
import static extension org.eclipse.papyrusrt.xtumlrt.util.XTUMLRTUtil.*
import org.eclipse.papyrusrt.xtumlrt.common.CapsulePart
+import org.eclipse.papyrusrt.xtumlrt.common.Connector
/**
* Post UML2xtumlrt SM validation
@@ -155,21 +156,37 @@
}
}
- protected dispatch def void validateElement(CapsulePart part, EObject source, MultiStatus result) {
- val capsule = part.owner as Capsule
- val capsuleParent = capsule.redefines
- if (capsuleParent instanceof Capsule) {
- val allParentParts = capsuleParent.getAllCapsuleParts
- if (allParentParts.exists[ name == part.name && part.redefines !== it ]) {
- val qn = (translator.getSource(part) as org.eclipse.uml2.uml.Property).qualifiedName
- val exception = new DetailedException(
- "Part " + qn + " has the same name as a part in the parent capsule but it does not redefine it"
- )
- val status = new Status(IStatus.ERROR, CodeGenPlugin.ID, exception.message, exception)
- result.add(status)
- }
- }
- }
+ protected dispatch def void validateElement(CapsulePart part, EObject source, MultiStatus result) {
+ val capsule = part.owner as Capsule
+ val capsuleParent = capsule.redefines
+ if (capsuleParent instanceof Capsule) {
+ val allParentParts = capsuleParent.getAllCapsuleParts
+ if (allParentParts.exists[ name == part.name && part.redefines !== it ]) {
+ val qn = (translator.getSource(part) as org.eclipse.uml2.uml.Property).qualifiedName
+ val exception = new DetailedException(
+ "Part " + qn + " has the same name as a part in the parent capsule but it does not redefine it"
+ )
+ val status = new Status(IStatus.ERROR, CodeGenPlugin.ID, exception.message, exception)
+ result.add(status)
+ }
+ }
+ }
+
+ protected dispatch def void validateElement(Connector conn, EObject source, MultiStatus result) {
+ val capsule = conn.owner as Capsule
+ val capsuleParent = capsule.redefines
+ if (capsuleParent instanceof Capsule) {
+ val allParentParts = capsuleParent.getAllConnectors
+ if (allParentParts.exists[ name == conn.name && conn.redefines !== it ]) {
+ val qn = (translator.getSource(conn) as org.eclipse.uml2.uml.Property).qualifiedName
+ val exception = new DetailedException(
+ "Connector " + qn + " has the same name as a connector in the parent capsule but it does not redefine it"
+ )
+ val status = new Status(IStatus.ERROR, CodeGenPlugin.ID, exception.message, exception)
+ result.add(status)
+ }
+ }
+ }
}
diff --git a/plugins/xtumlrt/common/org.eclipse.papyrusrt.xtumlrt.util/src/org/eclipse/papyrusrt/xtumlrt/util/XTUMLRTAnnotations.xtend b/plugins/xtumlrt/common/org.eclipse.papyrusrt.xtumlrt.util/src/org/eclipse/papyrusrt/xtumlrt/util/XTUMLRTAnnotations.xtend
new file mode 100644
index 0000000..cdf36b4
--- /dev/null
+++ b/plugins/xtumlrt/common/org.eclipse.papyrusrt.xtumlrt.util/src/org/eclipse/papyrusrt/xtumlrt/util/XTUMLRTAnnotations.xtend
@@ -0,0 +1,223 @@
+/*******************************************************************************
+* Copyright (c) 2015-2016 Zeligsoft (2009) Limited and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*******************************************************************************/
+package org.eclipse.papyrusrt.xtumlrt.util
+
+import java.util.HashMap
+import org.eclipse.emf.common.util.EList
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.common.util.BasicEList
+import org.eclipse.papyrusrt.xtumlrt.common.CommonElement
+import java.util.Collection
+import org.eclipse.papyrusrt.xtumlrt.common.NamedElement
+import org.eclipse.papyrusrt.xtumlrt.common.Annotation
+import org.eclipse.uml2.uml.Stereotype
+import org.eclipse.papyrusrt.xtumlrt.common.CommonFactory
+
+/**
+ * This class provides an API for accessing annotations given to
+ * xtUMLrt elements vie the stereotypes of the corresponding UML elements.
+ *
+ * @author Ernesto Posse
+ */
+class XTUMLRTAnnotations
+{
+ /** Maps each xtumlrt element to the list of UML stereotype applications from the C++ Properties Set profile */
+ static val annotationsMap = new HashMap<CommonElement, EList<EObject>>
+
+ /**
+ * Sets the stereotypes applied to a given UML element as annotations to a corresponding XtUML-RT element.
+ *
+ * @param umlElement - A {@link org.eclipse.uml2.uml.Element}
+ * @param element - An XtUML-RT {@link CommonElement}
+ */
+ static def setAnnotations
+ (
+ org.eclipse.uml2.uml.Element umlElement,
+ CommonElement element
+ )
+ {
+ if (umlElement === null || element === null || umlElement.applicableStereotypes === null)
+ return;
+ val stereotypeApplications =
+ if (umlElement.stereotypeApplications !== null)
+ umlElement.stereotypeApplications
+ else
+ new BasicEList<EObject>
+ annotationsMap.put( element, stereotypeApplications )
+ if (element instanceof NamedElement)
+ translateStereotypes( element, stereotypeApplications )
+ }
+
+ /**
+ * Returns the annotation of the given element with the given name, if it exists.
+ *
+ * @param element - An XtUML-RT {@link CommonElement}
+ * @param name - The name of an annotation.
+ */
+ static def getAnnotation( CommonElement element, String name )
+ {
+ if (element === null || name === null) return null;
+ if (element instanceof NamedElement)
+ {
+ val annotations = element.annotations
+ if (annotations !== null && ! annotations.empty)
+ {
+ val annotation = annotations.findFirst [ annotationName == name ]
+ if (annotation !== null)
+ return annotation
+ }
+ if (annotationsMap.containsKey( element ))
+ {
+ val otherAnnotations = annotationsMap.get( element )
+ if (otherAnnotations !== null)
+ return otherAnnotations.findFirst [ annotationName == name ]
+ }
+ }
+ }
+
+ /**
+ * Returns all annotations of the given element.
+ *
+ * @param element - An XtUML-RT {@link CommonElement}
+ */
+ static def getAllAnnotations( CommonElement element )
+ {
+ annotationsMap.get( element )
+ }
+
+ /**
+ * Returns the value of a property in an annotation of the given element.
+ *
+ * @param element - An XtUML-RT {@link CommonElement}
+ * @param annotation - The name of an annotation
+ * @param property - The name of a property
+ */
+ static dispatch def getProperty( CommonElement element, String annotation, String property )
+ {
+ if (element === null || annotation === null || property === null) return null;
+ var Object propertyValue = null
+ if (element instanceof NamedElement)
+ {
+ val annotations = element.annotations
+ propertyValue = findProperty( annotation, property, annotations )
+ }
+ if (propertyValue === null && annotationsMap.containsKey( element ))
+ {
+ val elemStereotypes = annotationsMap.get( element )
+ propertyValue = findProperty( annotation, property, elemStereotypes )
+ }
+ return propertyValue
+ }
+
+ protected static dispatch def Object findProperty( String annotation, String property, Iterable<? extends EObject> annotations )
+ {
+ if (annotations !== null && ! annotations.empty)
+ {
+ val theAnnotation = annotations.findFirst [ annotationName == annotation ]
+ if (theAnnotation !== null)
+ getAnnotationProperty( theAnnotation, property )
+ }
+ }
+
+ /**
+ * Returns the value of a property in a collection of annotations of the given element.
+ *
+ * @param element - An XtUML-RT {@link CommonElement}
+ * @param annotation - The name of an annotation
+ * @param property - The name of a property
+ */
+ static dispatch def getProperty( CommonElement element, Collection<String> annotations, String property )
+ {
+ if (annotations === null || property === null) return null;
+ var Object propertyValue = null
+ if (element instanceof NamedElement)
+ {
+ val annotationsList = element.annotations
+ propertyValue = findProperty( annotations, property, annotationsList )
+ }
+ if (propertyValue === null && annotationsMap.containsKey( element ))
+ {
+ val annotationsList = annotationsMap.get( element )
+ propertyValue = findProperty( annotations, property, annotationsList )
+ }
+ return propertyValue
+ }
+
+ protected static dispatch def Object findProperty( Collection<String> stereotypes, String property, Iterable<? extends EObject> annotations )
+ {
+ if (annotations !== null && ! annotations.empty)
+ {
+ val theAnnotation = annotations.findFirst [ stereotypes.contains( annotationName ) ]
+ if (theAnnotation !== null)
+ getAnnotationProperty( theAnnotation, property )
+ }
+ }
+
+ protected static dispatch def getAnnotationName( Annotation annotation )
+ {
+ annotation.name
+ }
+
+ protected static dispatch def getAnnotationName( Stereotype stereotype )
+ {
+ stereotype.eClass.name
+ }
+
+ protected static dispatch def getAnnotationName( EObject eobj )
+ {
+ eobj.eClass.name
+ }
+
+ protected static dispatch def getAnnotationProperty( Annotation annotation, String property )
+ {
+ val param = annotation?.parameters?.findFirst[ it.name == property ]
+ param?.value
+ }
+
+ protected static dispatch def getAnnotationProperty( Stereotype stereotype, String property )
+ {
+ val feature = stereotype?.eClass?.EAllStructuralFeatures?.findFirst[ it.name == property ]
+ if (feature !== null)
+ stereotype?.eGet( feature )
+ }
+
+ protected static dispatch def getAnnotationProperty( EObject eobj, String property )
+ {
+ val feature = eobj?.eClass?.EAllStructuralFeatures?.findFirst[ it.name == property ]
+ if (feature !== null)
+ eobj?.eGet( feature )
+ }
+
+ protected static def translateStereotypes( NamedElement element, Iterable<EObject> stereotypeApplications )
+ {
+ for (stereotypeApplication : stereotypeApplications)
+ {
+ val stereotype = stereotypeApplication.eClass
+ if (stereotype instanceof Stereotype)
+ {
+ val stereotypeName = stereotype.name
+ val currentAnnotations = element.annotations
+ if (!currentAnnotations.exists[name == stereotypeName])
+ {
+ val newAnnotation = CommonFactory.eINSTANCE.createAnnotation
+ newAnnotation.name = stereotypeName
+ for (stereotypeProperty : stereotype.attributes)
+ {
+ val stereotypePropertyName = stereotypeProperty.name
+ val newAnnotationParameter = CommonFactory.eINSTANCE.createAnnotationParameter
+ newAnnotationParameter.name = stereotypePropertyName
+ val value = getAnnotationProperty(stereotype, stereotypePropertyName )
+ newAnnotationParameter.value = if (value instanceof String) value else ""
+ }
+ element.annotations.add( newAnnotation )
+ }
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/plugins/xtumlrt/common/org.eclipse.papyrusrt.xtumlrt.util/src/org/eclipse/papyrusrt/xtumlrt/util/XTUMLRTUtil.xtend b/plugins/xtumlrt/common/org.eclipse.papyrusrt.xtumlrt.util/src/org/eclipse/papyrusrt/xtumlrt/util/XTUMLRTUtil.xtend
index c74c0f7..76bbc03 100644
--- a/plugins/xtumlrt/common/org.eclipse.papyrusrt.xtumlrt.util/src/org/eclipse/papyrusrt/xtumlrt/util/XTUMLRTUtil.xtend
+++ b/plugins/xtumlrt/common/org.eclipse.papyrusrt.xtumlrt.util/src/org/eclipse/papyrusrt/xtumlrt/util/XTUMLRTUtil.xtend
@@ -41,6 +41,8 @@
import org.eclipse.papyrusrt.xtumlrt.umlrt.PortRegistration
import org.eclipse.papyrusrt.xtumlrt.umlrt.RTPort
import static extension org.eclipse.papyrusrt.xtumlrt.util.GeneralUtil.*
+import static extension org.eclipse.papyrusrt.xtumlrt.util.XTUMLRTAnnotations.*
+
class XTUMLRTUtil
{
@@ -49,16 +51,16 @@
override int compare( NamedElement o1, NamedElement o2 )
{
// null sorts earlier
- if (o1 == null)
- return if (o2 == null) 0 else -1
- if (o2 == null)
+ if (o1 === null)
+ return if (o2 === null) 0 else -1
+ if (o2 === null)
return 1
val name1 = o1.name
val name2 = o2.name
- if (name1 == null)
- return if (name2 == null) 0 else -1
- if (name2 == null)
+ if (name1 === null)
+ return if (name2 === null) 0 else -1
+ if (name2 === null)
return 1
return name1.compareTo(name2);
@@ -146,7 +148,7 @@
val allParts = new LinkedHashSet<CapsulePart>()
if (capsule !== null)
{
- allParts.addAll( capsule.parts )
+ allParts.addAll( capsule.capsuleParts )
val parentElement = capsule.redefines
if (parentElement !== null && parentElement instanceof Capsule)
{
@@ -166,12 +168,12 @@
val allConnectors = new LinkedHashSet<Connector>()
if (capsule !== null)
{
- allConnectors.addAll( capsule.connectors )
+ allConnectors.addAll( capsule.capsuleConnectors )
val parentElement = capsule.redefines
if (parentElement !== null && parentElement instanceof Capsule)
{
val parent = parentElement as Capsule
- allConnectors.addAll( parent.allConnectors )
+ allConnectors.addAll( parent.allConnectors.filter [ !redefines( capsule, it) ] )
}
}
allConnectors
@@ -241,11 +243,23 @@
// stable between
// different parts of the generator (as well as between invocations).
val parts = new LinkedHashSet<CapsulePart>()
- parts.addAll( capsule.parts.filter [ it.type !== null ] )
+ parts.addAll( capsule.parts.filter [ type !== null && !isExcluded ] )
parts
}
/**
+ * Return the given capsule's connectors.
+ */
+ static def Iterable<Connector> getCapsuleConnectors( Capsule capsule ) {
+ // Connectors are put into a sorted list to make sure that the order is
+ // stable between
+ // different parts of the generator (as well as between invocations).
+ val connectors = new LinkedHashSet<Connector>()
+ connectors.addAll( capsule.connectors.filter [ !isExcluded ] )
+ connectors
+ }
+
+ /**
* Return the first container up the containing chain that is a {@link NamedElement}.
*/
static def NamedElement firstNamedContainer(EObject element)
@@ -362,6 +376,14 @@
}
/**
+ * Returns an iterable over the connectors of the given class which redefine some inherited connector.
+ */
+ static def Iterable<Connector> getConnectorRedefinitions( Capsule capsule )
+ {
+ capsule.connectors.filter[ it.redefines !== null && it.redefines instanceof Connector ]
+ }
+
+ /**
* Returns an iterable over the signals of the given protocol which redefine some inherited signal.
*/
static def Iterable<Signal> getSignalRedefinitions( Protocol protocol )
@@ -386,6 +408,14 @@
}
/**
+ * Returns an iterable over the connectors redefined by the given class.
+ */
+ static def Iterable<Connector> getRedefinedConnectors( Capsule capsule )
+ {
+ capsule.connectorRedefinitions.map [ it.redefines as Connector ]
+ }
+
+ /**
* Returns an iterable over the signals redefined by the given protocol.
*/
static def Iterable<Signal> getRedefinedSignals( Protocol protocol )
@@ -402,7 +432,7 @@
// stable between
// different parts of the generator (as well as between invocations).
val ports = new LinkedHashSet<Port>()
- ports.addAll( capsule.ports.filter [ it.type !== null ] )
+ ports.addAll( capsule.ports.filter [ type !== null && !isExcluded ] )
ports
}
@@ -413,7 +443,7 @@
static def Iterable<Signal> getSignals( Protocol protocol )
{
- protocol.protocolBehaviourFeatures.filter[ it instanceof Signal ].map [ it as Signal ]
+ protocol.protocolBehaviourFeatures.filter[ it instanceof Signal && !isExcluded ].map [ it as Signal ]
}
static def isExternalPort( Port port )
@@ -575,6 +605,14 @@
}
/**
+ * Returns true iff the given connector is inherited and redefined by the given class.
+ */
+ private static dispatch def redefines( Capsule capsule, Connector conn )
+ {
+ capsule.redefinedConnectors.exists[ it == conn ]
+ }
+
+ /**
* Returns true iff the given signal is inherited and redefined by the given protocol.
*/
private static dispatch def redefines( Protocol protocol, Signal signal )
@@ -602,4 +640,19 @@
CommonFactory.eINSTANCE.createOpaqueExpression => [ body = element.body ]
}
+ /**
+ * Returns true iff the given element is marked as excluded
+ */
+ static def isExcluded( CommonElement element )
+ {
+ val redefinedElementStereotype = getAnnotation( element, "RTRedefinedElement" )
+ if (redefinedElementStereotype !== null)
+ {
+ val rootFragment = getAnnotationProperty( redefinedElementStereotype, "rootFragment" )
+ if (rootFragment === null)
+ return true
+ }
+ return false
+ }
+
}
\ No newline at end of file
diff --git a/plugins/xtumlrt/metamodel/org.eclipse.papyrusrt.xtumlrt.common.model/model/common.ecore b/plugins/xtumlrt/metamodel/org.eclipse.papyrusrt.xtumlrt.common.model/model/common.ecore
index a448ee4..64e97f0 100644
--- a/plugins/xtumlrt/metamodel/org.eclipse.papyrusrt.xtumlrt.common.model/model/common.ecore
+++ b/plugins/xtumlrt/metamodel/org.eclipse.papyrusrt.xtumlrt.common.model/model/common.ecore
@@ -20,7 +20,7 @@
<eClassifiers xsi:type="ecore:EClass" name="Artifact" eSuperTypes="#//NamedElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="fileName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="Attribute" eSuperTypes="#//NamedElement #//TypedMultiplicityElement">
+ <eClassifiers xsi:type="ecore:EClass" name="Attribute" eSuperTypes="#//RedefinableElement #//TypedMultiplicityElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" eType="#//VisibilityKind"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
defaultValueLiteral="false"/>
@@ -55,7 +55,7 @@
<eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//Capsule"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//CapsuleKind"/>
</eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="Connector" eSuperTypes="#//NamedElement">
+ <eClassifiers xsi:type="ecore:EClass" name="Connector" eSuperTypes="#//RedefinableElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="ends" lowerBound="2" upperBound="2"
eType="#//ConnectorEnd" containment="true"/>
</eClassifiers>
diff --git a/plugins/xtumlrt/trans/org.eclipse.papyrusrt.xtumlrt.trans.from.uml/src/org/eclipse/papyrusrt/xtumlrt/trans/from/uml/GenerationProperties.xtend b/plugins/xtumlrt/trans/org.eclipse.papyrusrt.xtumlrt.trans.from.uml/src/org/eclipse/papyrusrt/xtumlrt/trans/from/uml/GenerationProperties.xtend
deleted file mode 100644
index 84ea656..0000000
--- a/plugins/xtumlrt/trans/org.eclipse.papyrusrt.xtumlrt.trans.from.uml/src/org/eclipse/papyrusrt/xtumlrt/trans/from/uml/GenerationProperties.xtend
+++ /dev/null
@@ -1,171 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2015-2016 Zeligsoft (2009) Limited and others.
-* All rights reserved. This program and the accompanying materials
-* are made available under the terms of the Eclipse Public License v1.0
-* which accompanies this distribution, and is available at
-* http://www.eclipse.org/legal/epl-v10.html
-*******************************************************************************/
-package org.eclipse.papyrusrt.xtumlrt.trans.from.uml
-
-import java.util.HashMap
-import org.eclipse.emf.common.util.EList
-import org.eclipse.emf.ecore.EObject
-import org.eclipse.emf.common.util.BasicEList
-import org.eclipse.papyrusrt.xtumlrt.common.CommonElement
-import java.util.Collection
-import org.eclipse.papyrusrt.xtumlrt.common.NamedElement
-import org.eclipse.papyrusrt.xtumlrt.common.Annotation
-import org.eclipse.uml2.uml.Stereotype
-import org.eclipse.papyrusrt.xtumlrt.common.CommonFactory
-
-/**
- * This class provides an API for accessing the generation properties given to
- * xtUMLrt elements vie the stereotypes of the corresponding UML elements.
- *
- * @author Ernesto Posse
- */
-class GenerationProperties
-{
- /** Maps each xtumlrt element to the list of UML stereotype applications from the C++ Properties Set profile */
- static val genProperties = new HashMap<CommonElement, EList<EObject>>
-
- static def setGenProperties
- (
- org.eclipse.uml2.uml.Element umlElement,
- CommonElement element
- )
- {
- if (umlElement === null || element === null || umlElement.applicableStereotypes === null)
- return;
- val stereotypeApplications =
- if (umlElement.stereotypeApplications !== null)
- umlElement.stereotypeApplications
- else
- new BasicEList<EObject>
- genProperties.put( element, stereotypeApplications )
- if (element instanceof NamedElement)
- translateStereotypes( element, stereotypeApplications )
- }
-
- static def getAllGenProperties( CommonElement element )
- {
- genProperties.get( element )
- }
-
- static dispatch def getProperty( CommonElement element, String stereotype, String property )
- {
- if (element === null || stereotype === null || property === null) return null;
- var Object propertyValue = null
- if (element instanceof NamedElement)
- {
- val annotations = element.annotations
- propertyValue = findProperty( stereotype, property, annotations )
- }
- if (propertyValue === null && genProperties.containsKey( element ))
- {
- val elemStereotypes = genProperties.get( element )
- propertyValue = findProperty( stereotype, property, elemStereotypes )
- }
- return propertyValue
- }
-
- protected static dispatch def Object findProperty( String stereotype, String property, Iterable<? extends EObject> annotations )
- {
- if (annotations !== null && ! annotations.empty)
- {
- val annotation = annotations.findFirst [ annotationName == stereotype ]
- if (annotation !== null)
- getAnnotationProperty( annotation, property )
- }
- }
-
- static dispatch def getProperty( CommonElement element, Collection<String> stereotypes, String property )
- {
- if (stereotypes === null || property === null) return null;
- var Object propertyValue = null
- if (element instanceof NamedElement)
- {
- val annotations = element.annotations
- propertyValue = findProperty( stereotypes, property, annotations )
- }
- if (propertyValue === null && genProperties.containsKey( element ))
- {
- val elemStereotypes = genProperties.get( element )
- propertyValue = findProperty( stereotypes, property, elemStereotypes )
- }
- return propertyValue
- }
-
- protected static dispatch def Object findProperty( Collection<String> stereotypes, String property, Iterable<? extends EObject> annotations )
- {
- if (annotations !== null && ! annotations.empty)
- {
- val annotation = annotations.findFirst [ stereotypes.contains( annotationName ) ]
- if (annotation !== null)
- getAnnotationProperty( annotation, property )
- }
- }
-
- protected static dispatch def getAnnotationName( Annotation annotation )
- {
- annotation.name
- }
-
- protected static dispatch def getAnnotationName( Stereotype stereotype )
- {
- stereotype.eClass.name
- }
-
- protected static dispatch def getAnnotationName( EObject eobj )
- {
- eobj.eClass.name
- }
-
- protected static dispatch def getAnnotationProperty( Annotation annotation, String property )
- {
- val param = annotation?.parameters?.findFirst[ it.name == property ]
- param?.value
- }
-
- protected static dispatch def getAnnotationProperty( Stereotype stereotype, String property )
- {
- val feature = stereotype?.eClass?.EAllStructuralFeatures?.findFirst[ it.name == property ]
- if (feature !== null)
- stereotype?.eGet( feature )
- }
-
- protected static dispatch def getAnnotationProperty( EObject eobj, String property )
- {
- val feature = eobj?.eClass?.EAllStructuralFeatures?.findFirst[ it.name == property ]
- if (feature !== null)
- eobj?.eGet( feature )
- }
-
- protected static def translateStereotypes( NamedElement element, Iterable<EObject> stereotypeApplications )
- {
- for (stereotypeApplication : stereotypeApplications)
- {
- val stereotype = stereotypeApplication.eClass
- if (stereotype instanceof Stereotype)
- {
- val stereotypeName = stereotype.name
- val currentAnnotations = element.annotations
- if (!currentAnnotations.exists[name == stereotypeName])
- {
- val newAnnotation = CommonFactory.eINSTANCE.createAnnotation
- newAnnotation.name = stereotypeName
- for (stereotypeProperty : stereotype.attributes)
- {
- val stereotypePropertyName = stereotypeProperty.name
- val newAnnotationParameter = CommonFactory.eINSTANCE.createAnnotationParameter
- newAnnotationParameter.name = stereotypePropertyName
- val value = getAnnotationProperty(stereotype, stereotypePropertyName )
- newAnnotationParameter.value = if (value instanceof String) value else ""
- }
- element.annotations.add( newAnnotation )
- }
- }
- }
- }
-
-}
\ No newline at end of file
diff --git a/plugins/xtumlrt/trans/org.eclipse.papyrusrt.xtumlrt.trans.from.uml/src/org/eclipse/papyrusrt/xtumlrt/trans/from/uml/UML2xtumlrtModelTranslator.xtend b/plugins/xtumlrt/trans/org.eclipse.papyrusrt.xtumlrt.trans.from.uml/src/org/eclipse/papyrusrt/xtumlrt/trans/from/uml/UML2xtumlrtModelTranslator.xtend
index c4d5735..a9e57a0 100644
--- a/plugins/xtumlrt/trans/org.eclipse.papyrusrt.xtumlrt.trans.from.uml/src/org/eclipse/papyrusrt/xtumlrt/trans/from/uml/UML2xtumlrtModelTranslator.xtend
+++ b/plugins/xtumlrt/trans/org.eclipse.papyrusrt.xtumlrt.trans.from.uml/src/org/eclipse/papyrusrt/xtumlrt/trans/from/uml/UML2xtumlrtModelTranslator.xtend
@@ -60,6 +60,7 @@
import org.eclipse.papyrusrt.xtumlrt.umlrt.RTPort
import org.eclipse.papyrusrt.xtumlrt.umlrt.UmlrtFactory
import org.eclipse.papyrusrt.xtumlrt.util.ActionLangUtils
+import org.eclipse.papyrusrt.xtumlrt.util.XTUMLRTAnnotations
import org.eclipse.papyrusrt.xtumlrt.util.XTUMLRTLogger
import org.eclipse.uml2.types.TypesPackage
import org.eclipse.uml2.uml.AggregationKind
@@ -224,7 +225,6 @@
{}
else
initPackage( packge, it as Package )
- GenerationProperties.setGenProperties( packge, it )
}
protected def initModel( org.eclipse.uml2.uml.Model model, RTModel newModel )
@@ -342,7 +342,6 @@
}
else
initOperation( operation, it as Operation )
- GenerationProperties.setGenProperties( operation, it )
}
protected def initOperation( org.eclipse.uml2.uml.Operation operation, Operation newOperation )
@@ -407,7 +406,6 @@
initRTPassiveClass( klass, it as RTPassiveClass )
if (klass.isSystemElement)
addSysAnnotation
- GenerationProperties.setGenProperties( klass, it )
}
protected dispatch def initStructuredType( Class klass, StructuredType newType )
@@ -481,7 +479,6 @@
create CommonFactory.eINSTANCE.createGeneralization
translate( org.eclipse.uml2.uml.Generalization generalization )
{
- GenerationProperties.setGenProperties( generalization, it )
setSuper( translateFeature( generalization, "general", Class, StructuredType ) as StructuredType )
setSub( translateFeature( generalization, "specific", Class, StructuredType ) as StructuredType )
}
@@ -494,7 +491,6 @@
create CommonFactory.eINSTANCE.createDependency
translate( org.eclipse.uml2.uml.Dependency dependency )
{
- GenerationProperties.setGenProperties( dependency, it )
if (dependency.suppliers === null || dependency.suppliers.empty)
XTUMLRTLogger.error( "Dependency '" + dependency.qualifiedName + "' has no suppliers" )
if (dependency.clients === null || dependency.clients.empty)
@@ -523,7 +519,6 @@
translate( Property property )
{
name = property.name
- GenerationProperties.setGenProperties( property, it )
if (property.isCapsulePart)
initCapsulePart( property, it as CapsulePart )
else if (property.isRTPort)
@@ -536,13 +531,14 @@
}
initAttribute( property, it as Attribute )
}
+ translateRedefinableElement( property, it as RedefinableElement )
translateMultiplicityElement( property, it as MultiplicityElement )
}
protected def initAttribute( Property property, Attribute newAttribute )
{
val it = newAttribute
- val typeMaybeNull = GenerationProperties.getProperty( it, "AttributeProperties", "type" ) !== null
+ val typeMaybeNull = XTUMLRTAnnotations.getProperty( it, "AttributeProperties", "type" ) !== null
type = translateFeature( property, "type", org.eclipse.uml2.uml.Type, Type, typeMaybeNull ) as Type
visibility = translateEnumFeature( property, "visibility", org.eclipse.uml2.uml.VisibilityKind, VisibilityKind ) as VisibilityKind
setDefault( translateFeature( property, "defaultValue", org.eclipse.uml2.uml.ValueSpecification, ValueSpecification, true ) as ValueSpecification )
@@ -583,7 +579,6 @@
val it = newPort
type = translateFeature( property, "type", Collaboration, Protocol ) as Protocol
conjugate = (property as org.eclipse.uml2.uml.Port).conjugated
- translateRedefinableElement( property, it )
it
}
@@ -618,7 +613,6 @@
registrationOverride = rtPortStereotype.registrationOverride
setPortKind( rtPortStereotype, it )
}
- translateRedefinableElement( property, it )
}
protected def setPortKind( org.eclipse.papyrusrt.umlrt.profile.UMLRealTime.RTPort stereotype, RTPort newRTPort )
@@ -753,6 +747,7 @@
{
ends.add( translateElement(end) as ConnectorEnd )
}
+ translateRedefinableElement( connector, it )
}
/**
@@ -795,7 +790,6 @@
}
type = translateFeature( parameter, "type", org.eclipse.uml2.uml.Type, Type, maybenull ) as Type
translateMultiplicityElement( parameter, it )
- GenerationProperties.setGenProperties( parameter, it )
}
/**
@@ -907,7 +901,6 @@
{
name = artifact.name
fileName = artifact.fileName
- GenerationProperties.setGenProperties( artifact, it )
}
diff --git a/plugins/xtumlrt/trans/org.eclipse.papyrusrt.xtumlrt.trans.from.uml/src/org/eclipse/papyrusrt/xtumlrt/trans/from/uml/UML2xtumlrtSMTranslator.xtend b/plugins/xtumlrt/trans/org.eclipse.papyrusrt.xtumlrt.trans.from.uml/src/org/eclipse/papyrusrt/xtumlrt/trans/from/uml/UML2xtumlrtSMTranslator.xtend
index 7ce2f68..b049f7a 100644
--- a/plugins/xtumlrt/trans/org.eclipse.papyrusrt.xtumlrt.trans.from.uml/src/org/eclipse/papyrusrt/xtumlrt/trans/from/uml/UML2xtumlrtSMTranslator.xtend
+++ b/plugins/xtumlrt/trans/org.eclipse.papyrusrt.xtumlrt.trans.from.uml/src/org/eclipse/papyrusrt/xtumlrt/trans/from/uml/UML2xtumlrtSMTranslator.xtend
@@ -36,7 +36,7 @@
import org.eclipse.papyrusrt.xtumlrt.umlrt.RTTrigger
import org.eclipse.papyrusrt.xtumlrt.umlrt.UmlrtFactory
import org.eclipse.papyrusrt.xtumlrt.util.ActionLangUtils
-import org.eclipse.papyrusrt.xtumlrt.util.DetailedException
+import org.eclipse.papyrusrt.xtumlrt.util.XTUMLRTAnnotations
import org.eclipse.papyrusrt.xtumlrt.util.XTUMLRTLogger
import org.eclipse.uml2.uml.AnyReceiveEvent
import org.eclipse.uml2.uml.Behavior
@@ -81,7 +81,7 @@
top = translateElement( originalStateMachine.ownedRegion ) as CompositeState
translateRedefinableElement( originalStateMachine.ownedRegion, top )
translateRedefinableElement( originalStateMachine, it )
- GenerationProperties.setGenProperties( originalStateMachine, it )
+ XTUMLRTAnnotations.setAnnotations( originalStateMachine, it )
}
@@ -91,7 +91,7 @@
*/
dispatch def CompositeState
create
- if (region == null) null
+ if (region === null) null
else StatemachFactory.eINSTANCE.createCompositeState
translate( Region region )
{
@@ -150,7 +150,6 @@
exitPoints.addIfNotNull( translateElement(exitPoint) as ExitPoint )
}
translateRedefinableElement( originalState, it )
- GenerationProperties.setGenProperties( originalState, it )
}
}
@@ -218,7 +217,6 @@
if (it !== null)
{
name = originalPseudostate.effectiveName
- GenerationProperties.setGenProperties( originalPseudostate, it )
}
}
@@ -250,7 +248,6 @@
{
name = behaviour.effectiveName
source = ActionLangUtils.getCode( actionLanguage, behaviour )
- GenerationProperties.setGenProperties( behaviour, it )
}
}
@@ -269,7 +266,6 @@
actionChain = StatemachFactory.eINSTANCE.createActionChain
actionChain.actions.addIfNotNull( translateFeature( originalTransition, "effect", Behavior, TransitionAction, true ) as TransitionAction )
translateRedefinableElement( originalTransition, it )
- GenerationProperties.setGenProperties( originalTransition, it )
}
/**
@@ -283,7 +279,6 @@
translate( org.eclipse.uml2.uml.Trigger trigger )
{
name = trigger.effectiveName
- GenerationProperties.setGenProperties( trigger, it )
}
protected def RTTrigger translateRTTrigger( org.eclipse.uml2.uml.Trigger trigger )
@@ -353,7 +348,6 @@
name = originalGuard.effectiveName
body = StatemachextFactory.eINSTANCE.createGuardAction;
(body as ActionCode).source = ActionLangUtils.getCode( actionLanguage, originalGuard )
- GenerationProperties.setGenProperties( originalGuard, it )
}
}
diff --git a/plugins/xtumlrt/trans/org.eclipse.papyrusrt.xtumlrt.trans.from.uml/src/org/eclipse/papyrusrt/xtumlrt/trans/from/uml/UML2xtumlrtTranslator.xtend b/plugins/xtumlrt/trans/org.eclipse.papyrusrt.xtumlrt.trans.from.uml/src/org/eclipse/papyrusrt/xtumlrt/trans/from/uml/UML2xtumlrtTranslator.xtend
index 618cfd3..56c2e26 100644
--- a/plugins/xtumlrt/trans/org.eclipse.papyrusrt.xtumlrt.trans.from.uml/src/org/eclipse/papyrusrt/xtumlrt/trans/from/uml/UML2xtumlrtTranslator.xtend
+++ b/plugins/xtumlrt/trans/org.eclipse.papyrusrt.xtumlrt.trans.from.uml/src/org/eclipse/papyrusrt/xtumlrt/trans/from/uml/UML2xtumlrtTranslator.xtend
@@ -31,6 +31,7 @@
import org.eclipse.papyrusrt.xtumlrt.util.DetailedException
import org.eclipse.papyrusrt.xtumlrt.common.CommonElement
import org.eclipse.papyrusrt.xtumlrt.common.RedefinableElement
+import org.eclipse.papyrusrt.xtumlrt.util.XTUMLRTAnnotations
import org.eclipse.papyrusrt.xtumlrt.util.XTUMLRTLogger
import org.eclipse.uml2.uml.Element
import org.eclipse.uml2.uml.Enumeration
@@ -116,7 +117,7 @@
if (sourceUMLElement !== null)
{
generated.put( sourceUMLElement, replacement )
- GenerationProperties.setGenProperties( sourceUMLElement, replacement )
+ XTUMLRTAnnotations.setAnnotations( sourceUMLElement, replacement )
}
}
@@ -233,6 +234,7 @@
if (generated.containsKey( umlElement ))
return generated.get( umlElement )
val translated = translate( umlElement )
+ XTUMLRTAnnotations.setAnnotations( umlElement, translated )
if (translated !== null && !umlElement.isProtocolContainer)
generated.put( umlElement, translated )
orderedGeneratedList.add( translated )