diff options
author | Christian W. Damus | 2017-06-14 17:06:06 +0000 |
---|---|---|
committer | Christian W. Damus | 2017-06-14 17:06:06 +0000 |
commit | 6683408a769f64f9bda5fd5631d0e7c0ff4708a5 (patch) | |
tree | bb5708b4f3d0239c343c26ac1e73c4870a41b2be | |
parent | be4d6534fad42d75c705b09290842dbd01bfe66e (diff) | |
parent | a6106bebdf4c55341f4ce3bafdb4b28f131b3648 (diff) | |
download | org.eclipse.papyrus-rt-6683408a769f64f9bda5fd5631d0e7c0ff4708a5.tar.gz org.eclipse.papyrus-rt-6683408a769f64f9bda5fd5631d0e7c0ff4708a5.tar.xz org.eclipse.papyrus-rt-6683408a769f64f9bda5fd5631d0e7c0ff4708a5.zip |
Merge master into committers/cdamus/bug506513
67 files changed, 4746 insertions, 24 deletions
diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions/.project b/models/tests/codepattern/statemachines/AmbiguousTransitions/.project new file mode 100644 index 000000000..26eef1c4b --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions/.project @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>AmbiguousTransitions</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions/AmbiguousTransitions.di b/models/tests/codepattern/statemachines/AmbiguousTransitions/AmbiguousTransitions.di new file mode 100644 index 000000000..47e812dba --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions/AmbiguousTransitions.di @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<architecture:ArchitectureDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" contextId="org.eclipse.papyrusrt.umlrt.architecture"/> diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions/AmbiguousTransitions.notation b/models/tests/codepattern/statemachines/AmbiguousTransitions/AmbiguousTransitions.notation new file mode 100644 index 000000000..0162b9aed --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions/AmbiguousTransitions.notation @@ -0,0 +1,322 @@ +<?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: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/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML"> + <notation:Diagram xmi:id="_Slx7ME-xEeeBvLeqfpc2mw" type="CompositeStructure" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_SmOAEE-xEeeBvLeqfpc2mw" type="Class_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_SmRqcE-xEeeBvLeqfpc2mw" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_SmRqcU-xEeeBvLeqfpc2mw" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_SmRqck-xEeeBvLeqfpc2mw" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_SmSRgE-xEeeBvLeqfpc2mw" type="Class_StructureCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_SmSRgU-xEeeBvLeqfpc2mw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SmSRgk-xEeeBvLeqfpc2mw"/> + </children> + <element xmi:type="uml:Class" href="AmbiguousTransitions.uml#_SdaCUE-xEeeBvLeqfpc2mw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SmOAEU-xEeeBvLeqfpc2mw" x="40" y="40" width="500" height="250"/> + </children> + <styles xmi:type="notation:StringValueStyle" xmi:id="_Slx7MU-xEeeBvLeqfpc2mw" name="diagram_compatibility_version" stringValue="1.3.0"/> + <styles xmi:type="notation:DiagramStyle" xmi:id="_Slx7Mk-xEeeBvLeqfpc2mw"/> + <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_Slx7M0-xEeeBvLeqfpc2mw" diagramKindId="org.eclipse.papyrusrt.umlrt.tooling.diagram.common.UMLRTCapsuleStructure"> + <owner xmi:type="uml:Class" href="AmbiguousTransitions.uml#_SdaCUE-xEeeBvLeqfpc2mw"/> + </styles> + <element xmi:type="uml:Class" href="AmbiguousTransitions.uml#_SdaCUE-xEeeBvLeqfpc2mw"/> + </notation:Diagram> + <notation:Diagram xmi:id="_ZHQEIE-xEeeBvLeqfpc2mw" type="PapyrusUMLStateMachineDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_ZHQEIU-xEeeBvLeqfpc2mw" type="StateMachine_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_ZHQEIk-xEeeBvLeqfpc2mw" type="StateMachine_NameLabel"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHQEI0-xEeeBvLeqfpc2mw" width="700" height="16"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_ZHQEJE-xEeeBvLeqfpc2mw" type="StateMachine_RegionCompartment"> + <children xmi:type="notation:Shape" xmi:id="_ZHQEJU-xEeeBvLeqfpc2mw" type="Region_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZHQEJk-xEeeBvLeqfpc2mw" source="RegionAnnotationKey"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZHQEJ0-xEeeBvLeqfpc2mw" key="RegionZoneKey" value=""/> + </eAnnotations> + <children xmi:type="notation:BasicCompartment" xmi:id="_ZHQEKE-xEeeBvLeqfpc2mw" type="Region_SubvertexCompartment"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a7EyME-xEeeBvLeqfpc2mw" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a7EyMU-xEeeBvLeqfpc2mw" key="mutable" value="true"/> + </eAnnotations> + <children xmi:type="notation:Shape" xmi:id="_ajupME-xEeeBvLeqfpc2mw" type="Pseudostate_InitialShape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a7FZQE-xEeeBvLeqfpc2mw" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a7FZQU-xEeeBvLeqfpc2mw" key="mutable" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_ajupMk-xEeeBvLeqfpc2mw" type="Pseudostate_InitialFloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ajvQQE-xEeeBvLeqfpc2mw" x="25" y="3"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_ajvQQU-xEeeBvLeqfpc2mw" type="Pseudostate_InitialStereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ajvQQk-xEeeBvLeqfpc2mw" x="25" y="-10"/> + </children> + <element xmi:type="uml:Pseudostate" href="AmbiguousTransitions.uml#_ZF9DoE-xEeeBvLeqfpc2mw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajupMU-xEeeBvLeqfpc2mw" x="9" y="-6"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_ajvQQ0-xEeeBvLeqfpc2mw" type="State_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a7FZQk-xEeeBvLeqfpc2mw" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a7FZQ0-xEeeBvLeqfpc2mw" key="mutable" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_ajv3UE-xEeeBvLeqfpc2mw" type="State_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_ajv3UU-xEeeBvLeqfpc2mw" type="State_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ajv3Uk-xEeeBvLeqfpc2mw" x="40"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_ajv3U0-xEeeBvLeqfpc2mw" type="State_RegionCompartment"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajv3VE-xEeeBvLeqfpc2mw"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="_ajzhsE-xEeeBvLeqfpc2mw" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajzhsU-xEeeBvLeqfpc2mw"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions.uml#_ZGjgkE-xEeeBvLeqfpc2mw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajvQRE-xEeeBvLeqfpc2mw" x="129" y="134"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_amu54E-xEeeBvLeqfpc2mw" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_amu54U-xEeeBvLeqfpc2mw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_amu540-xEeeBvLeqfpc2mw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions.uml#_ZF9DoE-xEeeBvLeqfpc2mw"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_amu54k-xEeeBvLeqfpc2mw" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_and5sE-xEeeBvLeqfpc2mw" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_and5sU-xEeeBvLeqfpc2mw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_and5s0-xEeeBvLeqfpc2mw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions.uml#_ZGjgkE-xEeeBvLeqfpc2mw"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_and5sk-xEeeBvLeqfpc2mw" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_cSOLUE-xEeeBvLeqfpc2mw" type="State_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_cSOyYE-xEeeBvLeqfpc2mw" type="State_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_cSOyYU-xEeeBvLeqfpc2mw" type="State_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_cSOyYk-xEeeBvLeqfpc2mw" x="40"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_cSOyY0-xEeeBvLeqfpc2mw" type="State_RegionCompartment"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cSOyZE-xEeeBvLeqfpc2mw"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="_cSOyZU-xEeeBvLeqfpc2mw" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cSOyZk-xEeeBvLeqfpc2mw"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions.uml#_cRvqME-xEeeBvLeqfpc2mw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cSOLUU-xEeeBvLeqfpc2mw" x="309" y="54"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_cSf4I0-xEeeBvLeqfpc2mw" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_cSf4JE-xEeeBvLeqfpc2mw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_cSf4Jk-xEeeBvLeqfpc2mw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions.uml#_cRvqME-xEeeBvLeqfpc2mw"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cSf4JU-xEeeBvLeqfpc2mw" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_c2mqwE-xEeeBvLeqfpc2mw" type="State_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_c2nR0E-xEeeBvLeqfpc2mw" type="State_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_c2nR0U-xEeeBvLeqfpc2mw" type="State_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_c2nR0k-xEeeBvLeqfpc2mw" x="40"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_c2nR00-xEeeBvLeqfpc2mw" type="State_RegionCompartment"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c2nR1E-xEeeBvLeqfpc2mw"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="_c2nR1U-xEeeBvLeqfpc2mw" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c2nR1k-xEeeBvLeqfpc2mw"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions.uml#_c2JXwE-xEeeBvLeqfpc2mw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c2mqwU-xEeeBvLeqfpc2mw" x="309" y="134"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_c24-o0-xEeeBvLeqfpc2mw" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_c24-pE-xEeeBvLeqfpc2mw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_c24-pk-xEeeBvLeqfpc2mw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions.uml#_c2JXwE-xEeeBvLeqfpc2mw"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c24-pU-xEeeBvLeqfpc2mw" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_dXMPUE-xEeeBvLeqfpc2mw" type="State_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_dXM2YE-xEeeBvLeqfpc2mw" type="State_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_dXM2YU-xEeeBvLeqfpc2mw" type="State_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_dXM2Yk-xEeeBvLeqfpc2mw" x="40"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_dXM2Y0-xEeeBvLeqfpc2mw" type="State_RegionCompartment"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dXM2ZE-xEeeBvLeqfpc2mw"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="_dXM2ZU-xEeeBvLeqfpc2mw" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dXM2Zk-xEeeBvLeqfpc2mw"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions.uml#_dWx_oE-xEeeBvLeqfpc2mw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dXMPUU-xEeeBvLeqfpc2mw" x="309" y="214"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_dXd8I0-xEeeBvLeqfpc2mw" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_dXd8JE-xEeeBvLeqfpc2mw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_dXejME-xEeeBvLeqfpc2mw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions.uml#_dWx_oE-xEeeBvLeqfpc2mw"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dXd8JU-xEeeBvLeqfpc2mw" x="200"/> + </children> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHQEKU-xEeeBvLeqfpc2mw"/> + </children> + <element xmi:type="uml:Region" href="AmbiguousTransitions.uml#_ZFuaIE-xEeeBvLeqfpc2mw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHQEKk-xEeeBvLeqfpc2mw" width="700" height="280"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_ajh04E-xEeeBvLeqfpc2mw" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_ajh04U-xEeeBvLeqfpc2mw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ajh040-xEeeBvLeqfpc2mw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Region" href="AmbiguousTransitions.uml#_ZFuaIE-xEeeBvLeqfpc2mw"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajh04k-xEeeBvLeqfpc2mw" x="200"/> + </children> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHQEK0-xEeeBvLeqfpc2mw" y="16" width="700" height="284"/> + </children> + <element xmi:type="uml:StateMachine" href="AmbiguousTransitions.uml#_ZE1pUE-xEeeBvLeqfpc2mw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHQELE-xEeeBvLeqfpc2mw" x="30" y="30" width="700" height="300"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_ajG-IE-xEeeBvLeqfpc2mw" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_ajG-IU-xEeeBvLeqfpc2mw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ajLPkE-xEeeBvLeqfpc2mw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:StateMachine" href="AmbiguousTransitions.uml#_ZE1pUE-xEeeBvLeqfpc2mw"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ajG-Ik-xEeeBvLeqfpc2mw" x="230" y="30"/> + </children> + <styles xmi:type="notation:StringValueStyle" xmi:id="_ZHQELU-xEeeBvLeqfpc2mw" name="diagram_compatibility_version" stringValue="1.3.0"/> + <styles xmi:type="notation:DiagramStyle" xmi:id="_ZHQELk-xEeeBvLeqfpc2mw"/> + <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_ZHQEL0-xEeeBvLeqfpc2mw" diagramKindId="org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine.UMLRTStateMachine"> + <owner xmi:type="uml:StateMachine" href="AmbiguousTransitions.uml#_ZE1pUE-xEeeBvLeqfpc2mw"/> + </styles> + <element xmi:type="uml:StateMachine" href="AmbiguousTransitions.uml#_ZE1pUE-xEeeBvLeqfpc2mw"/> + <edges xmi:type="notation:Connector" xmi:id="_ajLPkU-xEeeBvLeqfpc2mw" type="StereotypeCommentLink" source="_ZHQEIU-xEeeBvLeqfpc2mw" target="_ajG-IE-xEeeBvLeqfpc2mw"> + <styles xmi:type="notation:FontStyle" xmi:id="_ajLPkk-xEeeBvLeqfpc2mw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ajL2ok-xEeeBvLeqfpc2mw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:StateMachine" href="AmbiguousTransitions.uml#_ZE1pUE-xEeeBvLeqfpc2mw"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajLPk0-xEeeBvLeqfpc2mw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajL2oE-xEeeBvLeqfpc2mw"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajL2oU-xEeeBvLeqfpc2mw"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_ajh05E-xEeeBvLeqfpc2mw" type="StereotypeCommentLink" source="_ZHQEJU-xEeeBvLeqfpc2mw" target="_ajh04E-xEeeBvLeqfpc2mw"> + <styles xmi:type="notation:FontStyle" xmi:id="_ajh05U-xEeeBvLeqfpc2mw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ajib8k-xEeeBvLeqfpc2mw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Region" href="AmbiguousTransitions.uml#_ZFuaIE-xEeeBvLeqfpc2mw"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ajh05k-xEeeBvLeqfpc2mw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajib8E-xEeeBvLeqfpc2mw"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ajib8U-xEeeBvLeqfpc2mw"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_amu55E-xEeeBvLeqfpc2mw" type="StereotypeCommentLink" source="_ajupME-xEeeBvLeqfpc2mw" target="_amu54E-xEeeBvLeqfpc2mw"> + <styles xmi:type="notation:FontStyle" xmi:id="_amu55U-xEeeBvLeqfpc2mw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_amu56U-xEeeBvLeqfpc2mw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions.uml#_ZF9DoE-xEeeBvLeqfpc2mw"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_amu55k-xEeeBvLeqfpc2mw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_amu550-xEeeBvLeqfpc2mw"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_amu56E-xEeeBvLeqfpc2mw"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_and5tE-xEeeBvLeqfpc2mw" type="StereotypeCommentLink" source="_ajvQQ0-xEeeBvLeqfpc2mw" target="_and5sE-xEeeBvLeqfpc2mw"> + <styles xmi:type="notation:FontStyle" xmi:id="_and5tU-xEeeBvLeqfpc2mw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_and5uU-xEeeBvLeqfpc2mw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions.uml#_ZGjgkE-xEeeBvLeqfpc2mw"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_and5tk-xEeeBvLeqfpc2mw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_and5t0-xEeeBvLeqfpc2mw"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_and5uE-xEeeBvLeqfpc2mw"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_a5HqYE-xEeeBvLeqfpc2mw" type="Transition_Edge" source="_ajupME-xEeeBvLeqfpc2mw" target="_ajvQQ0-xEeeBvLeqfpc2mw"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a-BYgE-xEeeBvLeqfpc2mw" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a-B_kE-xEeeBvLeqfpc2mw" key="mutable" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_a5HqY0-xEeeBvLeqfpc2mw" type="Transition_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_bbW0wE-xEeeBvLeqfpc2mw" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_a5HqZE-xEeeBvLeqfpc2mw"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_a5IRcE-xEeeBvLeqfpc2mw" type="Transition_GuardLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_bb0HwE-xEeeBvLeqfpc2mw" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_a5IRcU-xEeeBvLeqfpc2mw"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_a5IRck-xEeeBvLeqfpc2mw" type="Transition_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_bcKGAE-xEeeBvLeqfpc2mw" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_a5IRc0-xEeeBvLeqfpc2mw" y="59"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_a5HqYU-xEeeBvLeqfpc2mw"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions.uml#_ZG0mUE-xEeeBvLeqfpc2mw"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_a5HqYk-xEeeBvLeqfpc2mw" points="[40, 46, -643984, -643984]$[40, 46, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a5IRdE-xEeeBvLeqfpc2mw" id="(0.0,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a5IRdU-xEeeBvLeqfpc2mw" id="(0.0,0.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_cSgfME-xEeeBvLeqfpc2mw" type="StereotypeCommentLink" source="_cSOLUE-xEeeBvLeqfpc2mw" target="_cSf4I0-xEeeBvLeqfpc2mw"> + <styles xmi:type="notation:FontStyle" xmi:id="_cSgfMU-xEeeBvLeqfpc2mw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_cSgfNU-xEeeBvLeqfpc2mw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions.uml#_cRvqME-xEeeBvLeqfpc2mw"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cSgfMk-xEeeBvLeqfpc2mw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cSgfM0-xEeeBvLeqfpc2mw"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cSgfNE-xEeeBvLeqfpc2mw"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_c25lsE-xEeeBvLeqfpc2mw" type="StereotypeCommentLink" source="_c2mqwE-xEeeBvLeqfpc2mw" target="_c24-o0-xEeeBvLeqfpc2mw"> + <styles xmi:type="notation:FontStyle" xmi:id="_c25lsU-xEeeBvLeqfpc2mw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_c25ltU-xEeeBvLeqfpc2mw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions.uml#_c2JXwE-xEeeBvLeqfpc2mw"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_c25lsk-xEeeBvLeqfpc2mw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_c25ls0-xEeeBvLeqfpc2mw"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_c25ltE-xEeeBvLeqfpc2mw"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_dXejMU-xEeeBvLeqfpc2mw" type="StereotypeCommentLink" source="_dXMPUE-xEeeBvLeqfpc2mw" target="_dXd8I0-xEeeBvLeqfpc2mw"> + <styles xmi:type="notation:FontStyle" xmi:id="_dXejMk-xEeeBvLeqfpc2mw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_dXejNk-xEeeBvLeqfpc2mw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions.uml#_dWx_oE-xEeeBvLeqfpc2mw"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dXejM0-xEeeBvLeqfpc2mw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dXejNE-xEeeBvLeqfpc2mw"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dXejNU-xEeeBvLeqfpc2mw"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_fhtmIE-xEeeBvLeqfpc2mw" type="Transition_Edge" source="_ajvQQ0-xEeeBvLeqfpc2mw" target="_cSOLUE-xEeeBvLeqfpc2mw"> + <children xmi:type="notation:DecorationNode" xmi:id="_fhtmI0-xEeeBvLeqfpc2mw" type="Transition_NameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_fhtmJE-xEeeBvLeqfpc2mw" x="-14" y="-10"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_fhtmJU-xEeeBvLeqfpc2mw" type="Transition_GuardLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_fhtmJk-xEeeBvLeqfpc2mw"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_fhtmJ0-xEeeBvLeqfpc2mw" type="Transition_StereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_fhtmKE-xEeeBvLeqfpc2mw" y="60"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_fhtmIU-xEeeBvLeqfpc2mw"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions.uml#_fhOd8E-xEeeBvLeqfpc2mw"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fhtmIk-xEeeBvLeqfpc2mw" points="[-14, 5, -198, 79]$[166, -75, -18, -1]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fi9jUE-xEeeBvLeqfpc2mw" id="(0.75,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fi9jUU-xEeeBvLeqfpc2mw" id="(0.0,0.35)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_g7h4wE-xEeeBvLeqfpc2mw" type="Transition_Edge" source="_ajvQQ0-xEeeBvLeqfpc2mw" target="_c2mqwE-xEeeBvLeqfpc2mw"> + <children xmi:type="notation:DecorationNode" xmi:id="_g7h4w0-xEeeBvLeqfpc2mw" type="Transition_NameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_g7h4xE-xEeeBvLeqfpc2mw" x="-3" y="-15"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_g7h4xU-xEeeBvLeqfpc2mw" type="Transition_GuardLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_g7h4xk-xEeeBvLeqfpc2mw"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_g7h4x0-xEeeBvLeqfpc2mw" type="Transition_StereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_g7h4yE-xEeeBvLeqfpc2mw" y="60"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_g7h4wU-xEeeBvLeqfpc2mw"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions.uml#_g7KsYE-xEeeBvLeqfpc2mw"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g7h4wk-xEeeBvLeqfpc2mw" points="[11, 1, -154, 3]$[151, 1, -14, 3]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g8p6IE-xEeeBvLeqfpc2mw" id="(0.725,0.475)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g8p6IU-xEeeBvLeqfpc2mw" id="(0.35,0.425)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_hn9g8E-xEeeBvLeqfpc2mw" type="Transition_Edge" source="_ajvQQ0-xEeeBvLeqfpc2mw" target="_dXMPUE-xEeeBvLeqfpc2mw"> + <children xmi:type="notation:DecorationNode" xmi:id="_hn-IAE-xEeeBvLeqfpc2mw" type="Transition_NameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_hn-IAU-xEeeBvLeqfpc2mw" x="-4" y="-18"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_hn-IAk-xEeeBvLeqfpc2mw" type="Transition_GuardLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_hn-IA0-xEeeBvLeqfpc2mw"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_hn-IBE-xEeeBvLeqfpc2mw" type="Transition_StereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_hn-IBU-xEeeBvLeqfpc2mw" y="60"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_hn9g8U-xEeeBvLeqfpc2mw"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions.uml#_hng1AE-xEeeBvLeqfpc2mw"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hn9g8k-xEeeBvLeqfpc2mw" points="[5, 11, -167, -65]$[175, 91, 3, 15]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hpIloE-xEeeBvLeqfpc2mw" id="(0.625,0.725)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hpIloU-xEeeBvLeqfpc2mw" id="(0.0,0.25)"/> + </edges> + </notation:Diagram> +</xmi:XMI> diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions/AmbiguousTransitions.uml b/models/tests/codepattern/statemachines/AmbiguousTransitions/AmbiguousTransitions.uml new file mode 100644 index 000000000..dc0f9f641 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions/AmbiguousTransitions.uml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:UMLRTStateMachines="http://www.eclipse.org/papyrus/umlrt/statemachine" 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="_xtAuYE-wEeeBvLeqfpc2mw" name="AmbiguousTransitions"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xtBVcE-wEeeBvLeqfpc2mw" source="http://www.eclipse.org/papyrus-rt/language/1.0.0"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xtBVcU-wEeeBvLeqfpc2mw" key="language" value="umlrt-cpp"/> + </eAnnotations> + <packagedElement xmi:type="uml:Class" xmi:id="_SdaCUE-xEeeBvLeqfpc2mw" name="Top" classifierBehavior="_ZE1pUE-xEeeBvLeqfpc2mw" isActive="true"> + <ownedAttribute xmi:type="uml:Port" xmi:id="_l6Tf4E-xEeeBvLeqfpc2mw" name="protocol1" visibility="public" type="_Vk2UYE-xEeeBvLeqfpc2mw" isOrdered="true" aggregation="composite" isBehavior="true" isService="true"/> + <ownedBehavior xmi:type="uml:StateMachine" xmi:id="_ZE1pUE-xEeeBvLeqfpc2mw" name="StateMachine" isReentrant="false"> + <region xmi:type="uml:Region" xmi:id="_ZFuaIE-xEeeBvLeqfpc2mw" name="Region"> + <transition xmi:type="uml:Transition" xmi:id="_ZG0mUE-xEeeBvLeqfpc2mw" name="Initial" source="_ZF9DoE-xEeeBvLeqfpc2mw" target="_ZGjgkE-xEeeBvLeqfpc2mw"/> + <transition xmi:type="uml:Transition" xmi:id="_fhOd8E-xEeeBvLeqfpc2mw" kind="external" source="_ZGjgkE-xEeeBvLeqfpc2mw" target="_cRvqME-xEeeBvLeqfpc2mw"> + <trigger xmi:type="uml:Trigger" xmi:id="_ovOekE-xEeeBvLeqfpc2mw" event="_WxCasE-xEeeBvLeqfpc2mw" port="_l6Tf4E-xEeeBvLeqfpc2mw"/> + </transition> + <transition xmi:type="uml:Transition" xmi:id="_g7KsYE-xEeeBvLeqfpc2mw" kind="external" source="_ZGjgkE-xEeeBvLeqfpc2mw" target="_c2JXwE-xEeeBvLeqfpc2mw"> + <trigger xmi:type="uml:Trigger" xmi:id="_q5_F8E-xEeeBvLeqfpc2mw" event="_YCIPIE-xEeeBvLeqfpc2mw" port="_l6Tf4E-xEeeBvLeqfpc2mw"/> + </transition> + <transition xmi:type="uml:Transition" xmi:id="_hng1AE-xEeeBvLeqfpc2mw" kind="external" source="_ZGjgkE-xEeeBvLeqfpc2mw" target="_dWx_oE-xEeeBvLeqfpc2mw"> + <trigger xmi:type="uml:Trigger" xmi:id="_shPXoE-xEeeBvLeqfpc2mw" event="_WxCasE-xEeeBvLeqfpc2mw" port="_l6Tf4E-xEeeBvLeqfpc2mw"/> + </transition> + <subvertex xmi:type="uml:Pseudostate" xmi:id="_ZF9DoE-xEeeBvLeqfpc2mw" kind="initial"/> + <subvertex xmi:type="uml:State" xmi:id="_ZGjgkE-xEeeBvLeqfpc2mw" name="State1"/> + <subvertex xmi:type="uml:State" xmi:id="_cRvqME-xEeeBvLeqfpc2mw" name="State2"/> + <subvertex xmi:type="uml:State" xmi:id="_c2JXwE-xEeeBvLeqfpc2mw" name="State3"/> + <subvertex xmi:type="uml:State" xmi:id="_dWx_oE-xEeeBvLeqfpc2mw" name="State4"/> + </region> + </ownedBehavior> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_VlIBME-xEeeBvLeqfpc2mw" name="Protocol1"> + <packagedElement xmi:type="uml:Collaboration" xmi:id="_Vk2UYE-xEeeBvLeqfpc2mw" name="Protocol1"> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_VlYf4E-xEeeBvLeqfpc2mw" client="_Vk2UYE-xEeeBvLeqfpc2mw" supplier="_VlP9AE-xEeeBvLeqfpc2mw" contract="_VlP9AE-xEeeBvLeqfpc2mw"/> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_VloXgE-xEeeBvLeqfpc2mw" client="_Vk2UYE-xEeeBvLeqfpc2mw" supplier="_Vli38E-xEeeBvLeqfpc2mw" contract="_Vli38E-xEeeBvLeqfpc2mw"/> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="_VlP9AE-xEeeBvLeqfpc2mw" name="Protocol1"> + <ownedOperation xmi:type="uml:Operation" xmi:id="_WwXFQE-xEeeBvLeqfpc2mw" name="m1"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_YCATUE-xEeeBvLeqfpc2mw" name="m2"/> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="_Vla8IE-xEeeBvLeqfpc2mw" name="Protocol1~"/> + <packagedElement xmi:type="uml:Usage" xmi:id="_VlhCwE-xEeeBvLeqfpc2mw" client="_Vk2UYE-xEeeBvLeqfpc2mw" supplier="_Vla8IE-xEeeBvLeqfpc2mw"/> + <packagedElement xmi:type="uml:AnyReceiveEvent" xmi:id="_Vlhp0E-xEeeBvLeqfpc2mw" name="*"/> + <packagedElement xmi:type="uml:Interface" xmi:id="_Vli38E-xEeeBvLeqfpc2mw" name="Protocol1IO"/> + <packagedElement xmi:type="uml:Usage" xmi:id="_VlploE-xEeeBvLeqfpc2mw" client="_Vk2UYE-xEeeBvLeqfpc2mw" supplier="_Vli38E-xEeeBvLeqfpc2mw"/> + <packagedElement xmi:type="uml:CallEvent" xmi:id="_WxCasE-xEeeBvLeqfpc2mw" operation="_WwXFQE-xEeeBvLeqfpc2mw"/> + <packagedElement xmi:type="uml:CallEvent" xmi:id="_YCIPIE-xEeeBvLeqfpc2mw" operation="_YCATUE-xEeeBvLeqfpc2mw"/> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_xtBVck-wEeeBvLeqfpc2mw"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xtBVc0-wEeeBvLeqfpc2mw" 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> + <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_xtBVdE-wEeeBvLeqfpc2mw"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xtBVdU-wEeeBvLeqfpc2mw" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/umlrt/statemachine#/"/> + </eAnnotations> + <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_RT_PROFILE/UMLRealTimeSM-addendum.profile.uml#_KLcn0FDtEeOA4ecmvfqvaw"/> + </profileApplication> + <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_xtBVdk-wEeeBvLeqfpc2mw"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xtBVd0-wEeeBvLeqfpc2mw" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/umlrt/cppproperties#/"/> + </eAnnotations> + <appliedProfile xmi:type="uml:Profile" href="pathmap://UMLRT_CPP/RTCppProperties.profile.uml#_vl5LALs8EeSTjNEQkASznQ"/> + </profileApplication> + </uml:Model> + <UMLRealTime:Capsule xmi:id="_SmZmQE-xEeeBvLeqfpc2mw" base_Class="_SdaCUE-xEeeBvLeqfpc2mw"/> + <UMLRealTime:ProtocolContainer xmi:id="_VlM5sE-xEeeBvLeqfpc2mw" base_Package="_VlIBME-xEeeBvLeqfpc2mw"/> + <UMLRealTime:RTMessageSet xmi:id="_VlWqsE-xEeeBvLeqfpc2mw" base_Interface="_VlP9AE-xEeeBvLeqfpc2mw"/> + <UMLRealTime:RTMessageSet xmi:id="_Vlf0oE-xEeeBvLeqfpc2mw" base_Interface="_Vla8IE-xEeeBvLeqfpc2mw" rtMsgKind="out"/> + <UMLRealTime:RTMessageSet xmi:id="_VlmiUE-xEeeBvLeqfpc2mw" base_Interface="_Vli38E-xEeeBvLeqfpc2mw" rtMsgKind="inOut"/> + <UMLRealTime:Protocol xmi:id="_VlqzwE-xEeeBvLeqfpc2mw" base_Collaboration="_Vk2UYE-xEeeBvLeqfpc2mw"/> + <UMLRTStateMachines:RTPseudostate xmi:id="_ZGQloE-xEeeBvLeqfpc2mw" base_Pseudostate="_ZF9DoE-xEeeBvLeqfpc2mw"/> + <UMLRTStateMachines:RTState xmi:id="_ZGpnME-xEeeBvLeqfpc2mw" base_State="_ZGjgkE-xEeeBvLeqfpc2mw"/> + <UMLRTStateMachines:RTRegion xmi:id="_ZG5e0E-xEeeBvLeqfpc2mw" base_Region="_ZFuaIE-xEeeBvLeqfpc2mw"/> + <UMLRTStateMachines:RTStateMachine xmi:id="_ZHUVkE-xEeeBvLeqfpc2mw" base_StateMachine="_ZE1pUE-xEeeBvLeqfpc2mw"/> + <UMLRTStateMachines:RTState xmi:id="_cR0isE-xEeeBvLeqfpc2mw" base_State="_cRvqME-xEeeBvLeqfpc2mw"/> + <UMLRTStateMachines:RTState xmi:id="_c2MbEE-xEeeBvLeqfpc2mw" base_State="_c2JXwE-xEeeBvLeqfpc2mw"/> + <UMLRTStateMachines:RTState xmi:id="_dW1C8E-xEeeBvLeqfpc2mw" base_State="_dWx_oE-xEeeBvLeqfpc2mw"/> + <UMLRealTime:RTPort xmi:id="_l6kloE-xEeeBvLeqfpc2mw" isPublish="false" isWired="true" base_Port="_l6Tf4E-xEeeBvLeqfpc2mw"/> +</xmi:XMI> diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/CMakeLists.txt b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/CMakeLists.txt new file mode 100644 index 000000000..36a20dcf7 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/CMakeLists.txt @@ -0,0 +1,36 @@ +# Generated 2017-06-13 13:10:57 + +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 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/statemachines/AmbiguousTransitions/expected_src/Makefile b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/Makefile new file mode 100644 index 000000000..0bcbd2251 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions/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/statemachines/AmbiguousTransitions/expected_src/MakefileTop.mk b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/MakefileTop.mk new file mode 100644 index 000000000..6cb0eb295 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions/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 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/statemachines/AmbiguousTransitions/expected_src/Protocol1.cc b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/Protocol1.cc new file mode 100644 index 000000000..e5ff89666 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/Protocol1.cc @@ -0,0 +1,82 @@ + +#include "Protocol1.hh" + +#include "umlrtobjectclass.hh" +#include "umlrtoutsignal.hh" +struct UMLRTCommsPort; + +static UMLRTObject_field fields_m1[] = +{ + #ifdef NEED_NON_FLEXIBLE_ARRAY + { + 0, + 0, + 0, + 0, + 0 + } + #endif +}; + +static UMLRTObject payload_m1 = +{ + 0, + #ifdef NEED_NON_FLEXIBLE_ARRAY + 1 + #else + 0 + #endif + , + fields_m1 +}; + +static UMLRTObject_field fields_m2[] = +{ + #ifdef NEED_NON_FLEXIBLE_ARRAY + { + 0, + 0, + 0, + 0, + 0 + } + #endif +}; + +static UMLRTObject payload_m2 = +{ + 0, + #ifdef NEED_NON_FLEXIBLE_ARRAY + 1 + #else + 0 + #endif + , + fields_m2 +}; + +Protocol1::Base::Base( const UMLRTCommsPort * & srcPort ) +: UMLRTProtocol( srcPort ) +{ +} + +Protocol1::Conj::Conj( const UMLRTCommsPort * & srcPort ) +: UMLRTProtocol( srcPort ) +{ +} + +UMLRTOutSignal Protocol1::Conj::m1() const +{ + UMLRTOutSignal signal; + signal.initialize( "m1", signal_m1, srcPort, &payload_m1 ); + return signal; +} + +UMLRTOutSignal Protocol1::Conj::m2() const +{ + UMLRTOutSignal signal; + signal.initialize( "m2", signal_m2, srcPort, &payload_m2 ); + return signal; +} + + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/Protocol1.hh b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/Protocol1.hh new file mode 100644 index 000000000..5786c0dd6 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/Protocol1.hh @@ -0,0 +1,32 @@ + +#ifndef PROTOCOL1_HH +#define PROTOCOL1_HH + +#include "umlrtoutsignal.hh" +#include "umlrtprotocol.hh" +#include "umlrtsignal.hh" +struct UMLRTCommsPort; + +namespace Protocol1 +{ + class Base : public UMLRTProtocol + { + public: + Base( const UMLRTCommsPort * & srcPort ); + }; + class Conj : public UMLRTProtocol + { + public: + Conj( const UMLRTCommsPort * & srcPort ); + UMLRTOutSignal m1() const; + UMLRTOutSignal m2() const; + }; + enum SignalId + { + signal_m1 = UMLRTSignal::FIRST_PROTOCOL_SIGNAL_ID, + signal_m2 + }; +}; + +#endif + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/Top-connections.log b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/Top-connections.log new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/Top-connections.log diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/Top.cc b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/Top.cc new file mode 100644 index 000000000..8389c4fea --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/Top.cc @@ -0,0 +1,213 @@ + +#include "Top.hh" + +#include "Protocol1.hh" +#include "umlrtcommsportrole.hh" +#include "umlrtmessage.hh" +#include "umlrtslot.hh" +#include <cstddef> +#include "umlrtcapsuleclass.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 ) +, protocol1( borderPorts[borderport_protocol1] ) +, currentState( SPECIAL_INTERNAL_STATE_UNVISITED ) +{ + stateNames[State1] = "State1"; + stateNames[State2] = "State2"; + stateNames[State3] = "State3"; + stateNames[State4] = "State4"; + stateNames[SPECIAL_INTERNAL_STATE_TOP] = "<top>"; + stateNames[SPECIAL_INTERNAL_STATE_UNVISITED] = "<uninitialized>"; +} + + + + + +void Capsule_Top::bindPort( bool isBorder, int portId, int index ) +{ + if( isBorder ) + switch( portId ) + { + case borderport_protocol1: + UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_protocol1, index, true ); + break; + } +} + +void Capsule_Top::unbindPort( bool isBorder, int portId, int index ) +{ + if( isBorder ) + switch( portId ) + { + case borderport_protocol1: + UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_protocol1, index, false ); + UMLRTFrameService::disconnectPort( borderPorts[borderport_protocol1], index ); + break; + } +} + +void Capsule_Top::inject( const UMLRTMessage & message ) +{ + msg = &message; + switch( currentState ) + { + case State1: + currentState = state_____State1( &message ); + break; + case State2: + currentState = state_____State2( &message ); + break; + case State3: + currentState = state_____State3( &message ); + break; + case State4: + currentState = state_____State4( &message ); + break; + default: + break; + } +} + +void Capsule_Top::initialize( const UMLRTMessage & message ) +{ + msg = &message; + actionchain_____Initial( &message ); + currentState = State1; +} + +const char * Capsule_Top::getCurrentStateString() const +{ + return stateNames[currentState]; +} + + + + +void Capsule_Top::update_state( Capsule_Top::State newState ) +{ + currentState = newState; +} + +void Capsule_Top::actionchain_____Initial( const UMLRTMessage * msg ) +{ + update_state( State1 ); +} + +void Capsule_Top::actionchain_____transition1( const UMLRTMessage * msg ) +{ + update_state( SPECIAL_INTERNAL_STATE_TOP ); + update_state( State2 ); +} + +void Capsule_Top::actionchain_____transition2( const UMLRTMessage * msg ) +{ + update_state( SPECIAL_INTERNAL_STATE_TOP ); + update_state( State3 ); +} + +void Capsule_Top::actionchain_____transition3( const UMLRTMessage * msg ) +{ + update_state( SPECIAL_INTERNAL_STATE_TOP ); + update_state( State4 ); +} + +Capsule_Top::State Capsule_Top::state_____State1( const UMLRTMessage * msg ) +{ + switch( msg->destPort->role()->id ) + { + case port_protocol1: + switch( msg->getSignalId() ) + { + case Protocol1::signal_m1: + actionchain_____transition1( msg ); + return State2; + case Protocol1::signal_m2: + actionchain_____transition2( msg ); + return State3; + default: + this->unexpectedMessage(); + break; + } + return currentState; + default: + this->unexpectedMessage(); + break; + } + return currentState; +} + +Capsule_Top::State Capsule_Top::state_____State2( const UMLRTMessage * msg ) +{ + switch( msg->destPort->role()->id ) + { + default: + this->unexpectedMessage(); + break; + } + return currentState; +} + +Capsule_Top::State Capsule_Top::state_____State3( const UMLRTMessage * msg ) +{ + switch( msg->destPort->role()->id ) + { + default: + this->unexpectedMessage(); + break; + } + return currentState; +} + +Capsule_Top::State Capsule_Top::state_____State4( const UMLRTMessage * msg ) +{ + switch( msg->destPort->role()->id ) + { + default: + this->unexpectedMessage(); + break; + } + return currentState; +} + + +static const UMLRTCommsPortRole portroles_border[] = +{ + { + Capsule_Top::port_protocol1, + "Protocol1", + "protocol1", + "", + 1, + true, + false, + false, + false, + false, + false, + true + } +}; + +static void instantiate_Top( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts ) +{ + slot->capsule = new Capsule_Top( &Top, slot, borderPorts, NULL, false ); +} + +const UMLRTCapsuleClass Top = +{ + "Top", + NULL, + instantiate_Top, + 0, + NULL, + 1, + portroles_border, + 0, + NULL +}; + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/Top.hh b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/Top.hh new file mode 100644 index 000000000..b8659129c --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/Top.hh @@ -0,0 +1,60 @@ + +#ifndef TOP_HH +#define TOP_HH + +#include "Protocol1.hh" +#include "umlrtcapsule.hh" +#include "umlrtcapsuleclass.hh" +#include "umlrtmessage.hh" +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 ); +protected: + Protocol1::Base protocol1; +public: + enum BorderPortId + { + borderport_protocol1 + }; + enum PartId + { + }; + enum PortId + { + port_protocol1 + }; + virtual void bindPort( bool isBorder, int portId, int index ); + virtual void unbindPort( bool isBorder, int portId, int index ); + virtual void inject( const UMLRTMessage & message ); + virtual void initialize( const UMLRTMessage & message ); + const char * getCurrentStateString() const; +private: + enum State + { + State1, + State2, + State3, + State4, + SPECIAL_INTERNAL_STATE_TOP, + SPECIAL_INTERNAL_STATE_UNVISITED + }; + const char * stateNames[6]; + State currentState; + void update_state( State newState ); + void actionchain_____Initial( const UMLRTMessage * msg ); + void actionchain_____transition1( const UMLRTMessage * msg ); + void actionchain_____transition2( const UMLRTMessage * msg ); + void actionchain_____transition3( const UMLRTMessage * msg ); + State state_____State1( const UMLRTMessage * msg ); + State state_____State2( const UMLRTMessage * msg ); + State state_____State3( const UMLRTMessage * msg ); + State state_____State4( const UMLRTMessage * msg ); +}; +extern const UMLRTCapsuleClass Top; + +#endif + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/TopControllers.cc b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/TopControllers.cc new file mode 100644 index 000000000..1df070eac --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/TopControllers.cc @@ -0,0 +1,76 @@ + +#include "TopControllers.hh" + +#include "Top.hh" +#include "umlrtcapsuleclass.hh" +#include "umlrtcommsport.hh" +#include "umlrtcommsportfarend.hh" +#include "umlrtcontroller.hh" +#include "umlrtslot.hh" +#include <cstddef> + + +static UMLRTController DefaultController_( "DefaultController" ); + +UMLRTController * DefaultController = &DefaultController_; + +static UMLRTCommsPortFarEnd borderfarEndList_Top[] = +{ + { + 0, + NULL + } +}; + +UMLRTCommsPort borderports_Top[] = +{ + { + &Top, + Capsule_Top::borderport_protocol1, + &Top_slots[InstId_Top], + 1, + borderfarEndList_Top, + NULL, + NULL, + "", + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + true + } +}; + +static const UMLRTCommsPort * borderports_Top_ptrs[] = +{ + &borderports_Top[0] +}; + +static Capsule_Top top( &Top, &Top_slots[InstId_Top], borderports_Top_ptrs, NULL, true ); + +UMLRTSlot Top_slots[] = +{ + { + "Top", + 0, + &Top, + NULL, + 0, + &top, + &DefaultController_, + 0, + NULL, + 1, + borderports_Top, + NULL, + true, + false + } +}; + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/TopControllers.hh b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/TopControllers.hh new file mode 100644 index 000000000..0d5aac67e --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/TopControllers.hh @@ -0,0 +1,18 @@ + +#ifndef TOPCONTROLLERS_HH +#define TOPCONTROLLERS_HH + +class UMLRTController; +struct UMLRTCommsPort; +struct UMLRTSlot; + +enum CapsuleInstanceId +{ + InstId_Top +}; +extern UMLRTController * DefaultController; +extern UMLRTCommsPort borderports_Top[]; +extern UMLRTSlot Top_slots[]; + +#endif + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/TopMain.cc b/models/tests/codepattern/statemachines/AmbiguousTransitions/expected_src/TopMain.cc new file mode 100644 index 000000000..bf88ec44f --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions/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, 1 ); + + 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/statemachines/AmbiguousTransitions1/.project b/models/tests/codepattern/statemachines/AmbiguousTransitions1/.project new file mode 100644 index 000000000..c9055bd8b --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/.project @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>AmbiguousTransitions1</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions1/AmbiguousTransitions1.di b/models/tests/codepattern/statemachines/AmbiguousTransitions1/AmbiguousTransitions1.di new file mode 100644 index 000000000..47e812dba --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/AmbiguousTransitions1.di @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<architecture:ArchitectureDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" contextId="org.eclipse.papyrusrt.umlrt.architecture"/> diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions1/AmbiguousTransitions1.notation b/models/tests/codepattern/statemachines/AmbiguousTransitions1/AmbiguousTransitions1.notation new file mode 100644 index 000000000..f685a3316 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/AmbiguousTransitions1.notation @@ -0,0 +1,370 @@ +<?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: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/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML"> + <notation:Diagram xmi:id="_vhA6MFBbEeeAb79RbYsirA" type="CompositeStructure" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_vhEkkFBbEeeAb79RbYsirA" type="Class_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_vhHn4FBbEeeAb79RbYsirA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_vhHn4VBbEeeAb79RbYsirA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_vhHn4lBbEeeAb79RbYsirA" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_vhIO8FBbEeeAb79RbYsirA" type="Class_StructureCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_vhIO8VBbEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vhIO8lBbEeeAb79RbYsirA"/> + </children> + <element xmi:type="uml:Class" href="AmbiguousTransitions1.uml#_vdLjEFBbEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vhEkkVBbEeeAb79RbYsirA" x="40" y="40" width="500" height="250"/> + </children> + <styles xmi:type="notation:StringValueStyle" xmi:id="_vhA6MVBbEeeAb79RbYsirA" name="diagram_compatibility_version" stringValue="1.3.0"/> + <styles xmi:type="notation:DiagramStyle" xmi:id="_vhA6MlBbEeeAb79RbYsirA"/> + <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_vhA6M1BbEeeAb79RbYsirA" diagramKindId="org.eclipse.papyrusrt.umlrt.tooling.diagram.common.UMLRTCapsuleStructure"> + <owner xmi:type="uml:Class" href="AmbiguousTransitions1.uml#_vdLjEFBbEeeAb79RbYsirA"/> + </styles> + <element xmi:type="uml:Class" href="AmbiguousTransitions1.uml#_vdLjEFBbEeeAb79RbYsirA"/> + </notation:Diagram> + <notation:Diagram xmi:id="_7DL84FBbEeeAb79RbYsirA" type="PapyrusUMLStateMachineDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_7DL84VBbEeeAb79RbYsirA" type="StateMachine_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_7DL84lBbEeeAb79RbYsirA" type="StateMachine_NameLabel"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7DL841BbEeeAb79RbYsirA" width="700" height="16"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_7DL85FBbEeeAb79RbYsirA" type="StateMachine_RegionCompartment"> + <children xmi:type="notation:Shape" xmi:id="_7DL85VBbEeeAb79RbYsirA" type="Region_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7DL85lBbEeeAb79RbYsirA" source="RegionAnnotationKey"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7DL851BbEeeAb79RbYsirA" key="RegionZoneKey" value=""/> + </eAnnotations> + <children xmi:type="notation:BasicCompartment" xmi:id="_7DL86FBbEeeAb79RbYsirA" type="Region_SubvertexCompartment"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8A1Q4FBbEeeAb79RbYsirA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8A138FBbEeeAb79RbYsirA" key="mutable" value="true"/> + </eAnnotations> + <children xmi:type="notation:Shape" xmi:id="_702qYFBbEeeAb79RbYsirA" type="Pseudostate_InitialShape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8A138VBbEeeAb79RbYsirA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8A138lBbEeeAb79RbYsirA" key="mutable" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_702qYlBbEeeAb79RbYsirA" type="Pseudostate_InitialFloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_703RcFBbEeeAb79RbYsirA" x="25" y="3"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_703RcVBbEeeAb79RbYsirA" type="Pseudostate_InitialStereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_703RclBbEeeAb79RbYsirA" x="25" y="-10"/> + </children> + <element xmi:type="uml:Pseudostate" href="AmbiguousTransitions1.uml#_7C3MwFBbEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_702qYVBbEeeAb79RbYsirA" x="9" y="-6"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_7034gFBbEeeAb79RbYsirA" type="State_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8A1381BbEeeAb79RbYsirA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8A139FBbEeeAb79RbYsirA" key="mutable" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_7034glBbEeeAb79RbYsirA" type="State_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_7034g1BbEeeAb79RbYsirA" type="State_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7034hFBbEeeAb79RbYsirA" x="40"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_7034hVBbEeeAb79RbYsirA" type="State_RegionCompartment"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7034hlBbEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="_704fkFBbEeeAb79RbYsirA" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_704fkVBbEeeAb79RbYsirA"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions1.uml#_7C_IkFBbEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7034gVBbEeeAb79RbYsirA" x="109" y="134"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_71NPs1BbEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_71NPtFBbEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_71NPtlBbEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions1.uml#_7C3MwFBbEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_71NPtVBbEeeAb79RbYsirA" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_71aEA1BbEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_71aEBFBbEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_71aEBlBbEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions1.uml#_7C_IkFBbEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_71aEBVBbEeeAb79RbYsirA" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_-FVfQFBbEeeAb79RbYsirA" type="State_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_-FWGUFBbEeeAb79RbYsirA" type="State_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_-FWGUVBbEeeAb79RbYsirA" type="State_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_-FWGUlBbEeeAb79RbYsirA" x="40"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_-FWGU1BbEeeAb79RbYsirA" type="State_RegionCompartment"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-FWGVFBbEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="_-FWGVVBbEeeAb79RbYsirA" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-FWGVlBbEeeAb79RbYsirA"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions1.uml#_-FEZgFBbEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-FVfQVBbEeeAb79RbYsirA" x="309" y="54"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_-FiTkFBbEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_-FiTkVBbEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_-FiTk1BbEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions1.uml#_-FEZgFBbEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-FiTklBbEeeAb79RbYsirA" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_-jOVIFBbEeeAb79RbYsirA" type="State_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_-jOVIlBbEeeAb79RbYsirA" type="State_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_-jOVI1BbEeeAb79RbYsirA" type="State_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_-jOVJFBbEeeAb79RbYsirA" x="40"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_-jOVJVBbEeeAb79RbYsirA" type="State_RegionCompartment"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jOVJlBbEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="_-jO8MFBbEeeAb79RbYsirA" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jO8MVBbEeeAb79RbYsirA"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions1.uml#_-i8BQFBbEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jOVIVBbEeeAb79RbYsirA" x="309" y="114"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_-jbwg1BbEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_-jbwhFBbEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_-jcXkFBbEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions1.uml#_-i8BQFBbEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jbwhVBbEeeAb79RbYsirA" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="__CAi4FBbEeeAb79RbYsirA" type="State_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="__CAi4lBbEeeAb79RbYsirA" type="State_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="__CAi41BbEeeAb79RbYsirA" type="State_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="__CBJ8FBbEeeAb79RbYsirA" x="40"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="__CBJ8VBbEeeAb79RbYsirA" type="State_RegionCompartment"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="__CBJ8lBbEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="__CBJ81BbEeeAb79RbYsirA" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="__CBJ9FBbEeeAb79RbYsirA"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions1.uml#__BqkoFBbEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="__CAi4VBbEeeAb79RbYsirA" x="309" y="174"/> + </children> + <children xmi:type="notation:Shape" xmi:id="__CSPsFBbEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="__CSPsVBbEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="__CSPs1BbEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions1.uml#__BqkoFBbEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="__CSPslBbEeeAb79RbYsirA" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_B4Q-UFBcEeeAb79RbYsirA" type="State_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_B4Q-UlBcEeeAb79RbYsirA" type="State_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_B4Q-U1BcEeeAb79RbYsirA" type="State_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_B4Q-VFBcEeeAb79RbYsirA" x="40"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_B4Q-VVBcEeeAb79RbYsirA" type="State_RegionCompartment"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_B4Q-VlBcEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="_B4Q-V1BcEeeAb79RbYsirA" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_B4Q-WFBcEeeAb79RbYsirA"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions1.uml#_B36ZAFBcEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_B4Q-UVBcEeeAb79RbYsirA" x="309" y="234"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_B4g18FBcEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_B4g18VBcEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_B4g181BcEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions1.uml#_B36ZAFBcEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_B4g18lBcEeeAb79RbYsirA" x="200"/> + </children> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7DL86VBbEeeAb79RbYsirA"/> + </children> + <element xmi:type="uml:Region" href="AmbiguousTransitions1.uml#_7CyUQFBbEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7DL86lBbEeeAb79RbYsirA" width="700" height="280"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_70on8FBbEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_70on8VBbEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_70pPAFBbEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Region" href="AmbiguousTransitions1.uml#_7CyUQFBbEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_70on8lBbEeeAb79RbYsirA" x="200"/> + </children> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7DL861BbEeeAb79RbYsirA" y="16" width="700" height="284"/> + </children> + <element xmi:type="uml:StateMachine" href="AmbiguousTransitions1.uml#_7CYroFBbEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7DL87FBbEeeAb79RbYsirA" x="30" y="30" width="700" height="300"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_70bMkFBbEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_70bMkVBbEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_70feAFBbEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:StateMachine" href="AmbiguousTransitions1.uml#_7CYroFBbEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_70bMklBbEeeAb79RbYsirA" x="230" y="30"/> + </children> + <styles xmi:type="notation:StringValueStyle" xmi:id="_7DL87VBbEeeAb79RbYsirA" name="diagram_compatibility_version" stringValue="1.3.0"/> + <styles xmi:type="notation:DiagramStyle" xmi:id="_7DL87lBbEeeAb79RbYsirA"/> + <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_7DL871BbEeeAb79RbYsirA" diagramKindId="org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine.UMLRTStateMachine"> + <owner xmi:type="uml:StateMachine" href="AmbiguousTransitions1.uml#_7CYroFBbEeeAb79RbYsirA"/> + </styles> + <element xmi:type="uml:StateMachine" href="AmbiguousTransitions1.uml#_7CYroFBbEeeAb79RbYsirA"/> + <edges xmi:type="notation:Connector" xmi:id="_70gFEFBbEeeAb79RbYsirA" type="StereotypeCommentLink" source="_7DL84VBbEeeAb79RbYsirA" target="_70bMkFBbEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_70gFEVBbEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_70gFFVBbEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:StateMachine" href="AmbiguousTransitions1.uml#_7CYroFBbEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_70gFElBbEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_70gFE1BbEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_70gFFFBbEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_70pPAVBbEeeAb79RbYsirA" type="StereotypeCommentLink" source="_7DL85VBbEeeAb79RbYsirA" target="_70on8FBbEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_70pPAlBbEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_70pPBlBbEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Region" href="AmbiguousTransitions1.uml#_7CyUQFBbEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_70pPA1BbEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_70pPBFBbEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_70pPBVBbEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_71NPt1BbEeeAb79RbYsirA" type="StereotypeCommentLink" source="_702qYFBbEeeAb79RbYsirA" target="_71NPs1BbEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_71NPuFBbEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_71NPvFBbEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions1.uml#_7C3MwFBbEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_71NPuVBbEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_71NPulBbEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_71NPu1BbEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_71aEB1BbEeeAb79RbYsirA" type="StereotypeCommentLink" source="_7034gFBbEeeAb79RbYsirA" target="_71aEA1BbEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_71aECFBbEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_71arEFBbEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions1.uml#_7C_IkFBbEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_71aECVBbEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_71aEClBbEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_71aEC1BbEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_8ARQMFBbEeeAb79RbYsirA" type="Transition_Edge" source="_702qYFBbEeeAb79RbYsirA" target="_7034gFBbEeeAb79RbYsirA"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8GdXwFBbEeeAb79RbYsirA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8GdXwVBbEeeAb79RbYsirA" key="mutable" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_8AR3QFBbEeeAb79RbYsirA" type="Transition_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8aqGIFBbEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_8AR3QVBbEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_8AR3QlBbEeeAb79RbYsirA" type="Transition_GuardLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8a-2QFBbEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_8AR3Q1BbEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_8AR3RFBbEeeAb79RbYsirA" type="Transition_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8bSYQFBbEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_8AR3RVBbEeeAb79RbYsirA" y="59"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_8ARQMVBbEeeAb79RbYsirA"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions1.uml#_7DEBEFBbEeeAb79RbYsirA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8ARQMlBbEeeAb79RbYsirA" points="[40, 46, -643984, -643984]$[40, 46, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8AR3RlBbEeeAb79RbYsirA" id="(0.0,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8AR3R1BbEeeAb79RbYsirA" id="(0.0,0.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_-FiTlFBbEeeAb79RbYsirA" type="StereotypeCommentLink" source="_-FVfQFBbEeeAb79RbYsirA" target="_-FiTkFBbEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_-FiTlVBbEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_-FiTmVBbEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions1.uml#_-FEZgFBbEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-FiTllBbEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-FiTl1BbEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-FiTmFBbEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_-jcXkVBbEeeAb79RbYsirA" type="StereotypeCommentLink" source="_-jOVIFBbEeeAb79RbYsirA" target="_-jbwg1BbEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_-jcXklBbEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_-jcXllBbEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions1.uml#_-i8BQFBbEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-jcXk1BbEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-jcXlFBbEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-jcXlVBbEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="__CSPtFBbEeeAb79RbYsirA" type="StereotypeCommentLink" source="__CAi4FBbEeeAb79RbYsirA" target="__CSPsFBbEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="__CSPtVBbEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="__CS2wFBbEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions1.uml#__BqkoFBbEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__CSPtlBbEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__CSPt1BbEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__CSPuFBbEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_B4g19FBcEeeAb79RbYsirA" type="StereotypeCommentLink" source="_B4Q-UFBcEeeAb79RbYsirA" target="_B4g18FBcEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_B4g19VBcEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_B4g1-VBcEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions1.uml#_B36ZAFBcEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_B4g19lBcEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_B4g191BcEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_B4g1-FBcEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_DEtjUFBcEeeAb79RbYsirA" type="Transition_Edge" source="_7034gFBbEeeAb79RbYsirA" target="_-FVfQFBbEeeAb79RbYsirA"> + <children xmi:type="notation:DecorationNode" xmi:id="_DEtjU1BcEeeAb79RbYsirA" type="Transition_NameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_DEtjVFBcEeeAb79RbYsirA" x="-20" y="-10"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_DEtjVVBcEeeAb79RbYsirA" type="Transition_GuardLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_DEtjVlBcEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_DEtjV1BcEeeAb79RbYsirA" type="Transition_StereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_DEtjWFBcEeeAb79RbYsirA" y="60"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_DEtjUVBcEeeAb79RbYsirA"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions1.uml#_DET6sFBcEeeAb79RbYsirA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DEtjUlBcEeeAb79RbYsirA" points="[3, -11, -198, 58]$[183, -71, -18, -2]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DFoJUFBcEeeAb79RbYsirA" id="(0.425,0.275)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DFoJUVBcEeeAb79RbYsirA" id="(0.45,0.55)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_D0NtoFBcEeeAb79RbYsirA" type="Transition_Edge" source="_7034gFBbEeeAb79RbYsirA" target="_-jOVIFBbEeeAb79RbYsirA"> + <children xmi:type="notation:DecorationNode" xmi:id="_D0Nto1BcEeeAb79RbYsirA" type="Transition_NameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_D0NtpFBcEeeAb79RbYsirA" x="8" y="-18"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_D0NtpVBcEeeAb79RbYsirA" type="Transition_GuardLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_D0NtplBcEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_D0Ntp1BcEeeAb79RbYsirA" type="Transition_StereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_D0NtqFBcEeeAb79RbYsirA" y="60"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_D0NtoVBcEeeAb79RbYsirA"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions1.uml#_Dzzd8FBcEeeAb79RbYsirA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D0NtolBcEeeAb79RbYsirA" points="[-1, -8, -199, -1]$[179, -8, -19, -1]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D1LW8FBcEeeAb79RbYsirA" id="(1.0,0.25)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D1L-AFBcEeeAb79RbYsirA" id="(0.475,0.525)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_E3jZ8FBcEeeAb79RbYsirA" type="Transition_Edge" source="_7034gFBbEeeAb79RbYsirA" target="__CAi4FBbEeeAb79RbYsirA"> + <children xmi:type="notation:DecorationNode" xmi:id="_E3jZ81BcEeeAb79RbYsirA" type="Transition_NameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_E3jZ9FBcEeeAb79RbYsirA" x="21" y="-19"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_E3jZ9VBcEeeAb79RbYsirA" type="Transition_GuardLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_E3jZ9lBcEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_E3jZ91BcEeeAb79RbYsirA" type="Transition_StereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_E3jZ-FBcEeeAb79RbYsirA" y="60"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_E3jZ8VBcEeeAb79RbYsirA"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions1.uml#_E3GuAFBcEeeAb79RbYsirA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_E3jZ8lBcEeeAb79RbYsirA" points="[12, -3, -171, -31]$[182, 17, -1, -11]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_E4nw8FBcEeeAb79RbYsirA" id="(0.7,0.575)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_E4nw8VBcEeeAb79RbYsirA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_F9SS8FBcEeeAb79RbYsirA" type="Transition_Edge" source="_7034gFBbEeeAb79RbYsirA" target="_B4Q-UFBcEeeAb79RbYsirA"> + <children xmi:type="notation:DecorationNode" xmi:id="_F9S6AFBcEeeAb79RbYsirA" type="Transition_NameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_F9S6AVBcEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_F9S6AlBcEeeAb79RbYsirA" type="Transition_GuardLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_F9S6A1BcEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_F9S6BFBcEeeAb79RbYsirA" type="Transition_StereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_F9S6BVBcEeeAb79RbYsirA" y="60"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_F9SS8VBcEeeAb79RbYsirA"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions1.uml#_F88UsFBcEeeAb79RbYsirA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F9SS8lBcEeeAb79RbYsirA" points="[-17, -2, -217, -97]$[183, 98, -17, 3]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F-PVMFBcEeeAb79RbYsirA" id="(0.5,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F-PVMVBcEeeAb79RbYsirA" id="(0.425,0.425)"/> + </edges> + </notation:Diagram> +</xmi:XMI> diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions1/AmbiguousTransitions1.uml b/models/tests/codepattern/statemachines/AmbiguousTransitions1/AmbiguousTransitions1.uml new file mode 100644 index 000000000..4f4fca27d --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/AmbiguousTransitions1.uml @@ -0,0 +1,105 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:UMLRTStateMachines="http://www.eclipse.org/papyrus/umlrt/statemachine" 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="_r6gtkFBbEeeAb79RbYsirA" name="AmbiguousTransitions1"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_r6gtkVBbEeeAb79RbYsirA" source="http://www.eclipse.org/papyrus-rt/language/1.0.0"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_r6gtklBbEeeAb79RbYsirA" key="language" value="umlrt-cpp"/> + </eAnnotations> + <packagedElement xmi:type="uml:Class" xmi:id="_vdLjEFBbEeeAb79RbYsirA" name="Top" classifierBehavior="_7CYroFBbEeeAb79RbYsirA" isActive="true"> + <ownedAttribute xmi:type="uml:Port" xmi:id="_x9otoFBbEeeAb79RbYsirA" name="protocol1" visibility="public" type="_yXafkFBbEeeAb79RbYsirA" isOrdered="true" aggregation="composite" isBehavior="true" isService="true"/> + <ownedAttribute xmi:type="uml:Port" xmi:id="_4cQ98FBbEeeAb79RbYsirA" name="protocol2" visibility="public" type="_4veN0FBbEeeAb79RbYsirA" isOrdered="true" aggregation="composite" isBehavior="true" isService="true"/> + <ownedBehavior xmi:type="uml:StateMachine" xmi:id="_7CYroFBbEeeAb79RbYsirA" name="StateMachine" isReentrant="false"> + <region xmi:type="uml:Region" xmi:id="_7CyUQFBbEeeAb79RbYsirA" name="Region"> + <transition xmi:type="uml:Transition" xmi:id="_7DEBEFBbEeeAb79RbYsirA" name="Initial" source="_7C3MwFBbEeeAb79RbYsirA" target="_7C_IkFBbEeeAb79RbYsirA"/> + <transition xmi:type="uml:Transition" xmi:id="_DET6sFBcEeeAb79RbYsirA" name="" kind="external" source="_7C_IkFBbEeeAb79RbYsirA" target="_-FEZgFBbEeeAb79RbYsirA"> + <trigger xmi:type="uml:Trigger" xmi:id="_HdaB4FBcEeeAb79RbYsirA" event="_15v94FBbEeeAb79RbYsirA" port="_x9otoFBbEeeAb79RbYsirA"/> + </transition> + <transition xmi:type="uml:Transition" xmi:id="_Dzzd8FBcEeeAb79RbYsirA" name="" kind="external" source="_7C_IkFBbEeeAb79RbYsirA" target="_-i8BQFBbEeeAb79RbYsirA"> + <trigger xmi:type="uml:Trigger" xmi:id="_JTnVkFBcEeeAb79RbYsirA" event="_3L2e8FBbEeeAb79RbYsirA" port="_x9otoFBbEeeAb79RbYsirA"/> + </transition> + <transition xmi:type="uml:Transition" xmi:id="_E3GuAFBcEeeAb79RbYsirA" name="" kind="external" source="_7C_IkFBbEeeAb79RbYsirA" target="__BqkoFBbEeeAb79RbYsirA"> + <trigger xmi:type="uml:Trigger" xmi:id="_LpPJIFBcEeeAb79RbYsirA" event="_6ADE4FBbEeeAb79RbYsirA" port="_4cQ98FBbEeeAb79RbYsirA"/> + <trigger xmi:type="uml:Trigger" xmi:id="_R3KrAFBcEeeAb79RbYsirA" event="_3L2e8FBbEeeAb79RbYsirA" port="_x9otoFBbEeeAb79RbYsirA"/> + </transition> + <transition xmi:type="uml:Transition" xmi:id="_F88UsFBcEeeAb79RbYsirA" kind="external" source="_7C_IkFBbEeeAb79RbYsirA" target="_B36ZAFBcEeeAb79RbYsirA"/> + <subvertex xmi:type="uml:Pseudostate" xmi:id="_7C3MwFBbEeeAb79RbYsirA" kind="initial"/> + <subvertex xmi:type="uml:State" xmi:id="_7C_IkFBbEeeAb79RbYsirA" name="State1"/> + <subvertex xmi:type="uml:State" xmi:id="_-FEZgFBbEeeAb79RbYsirA" name="State2"/> + <subvertex xmi:type="uml:State" xmi:id="_-i8BQFBbEeeAb79RbYsirA" name="State3"/> + <subvertex xmi:type="uml:State" xmi:id="__BqkoFBbEeeAb79RbYsirA" name="State4"/> + <subvertex xmi:type="uml:State" xmi:id="_B36ZAFBcEeeAb79RbYsirA" name="State5"/> + </region> + </ownedBehavior> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_yYF1AFBbEeeAb79RbYsirA" name="Protocol1"> + <packagedElement xmi:type="uml:Collaboration" xmi:id="_yXafkFBbEeeAb79RbYsirA" name="Protocol1"> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_yYNw0FBbEeeAb79RbYsirA" client="_yXafkFBbEeeAb79RbYsirA" supplier="_yYKGcFBbEeeAb79RbYsirA" contract="_yYKGcFBbEeeAb79RbYsirA"/> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_yYYI4FBbEeeAb79RbYsirA" client="_yXafkFBbEeeAb79RbYsirA" supplier="_yYT3cFBbEeeAb79RbYsirA" contract="_yYT3cFBbEeeAb79RbYsirA"/> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="_yYKGcFBbEeeAb79RbYsirA" name="Protocol1"> + <ownedOperation xmi:type="uml:Operation" xmi:id="_15TR8FBbEeeAb79RbYsirA" name="m1"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_3LujIFBbEeeAb79RbYsirA" name="m2"/> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="_yYO-8FBbEeeAb79RbYsirA" name="Protocol1~"/> + <packagedElement xmi:type="uml:Usage" xmi:id="_yYSpUFBbEeeAb79RbYsirA" client="_yXafkFBbEeeAb79RbYsirA" supplier="_yYO-8FBbEeeAb79RbYsirA"/> + <packagedElement xmi:type="uml:AnyReceiveEvent" xmi:id="_yYTQYFBbEeeAb79RbYsirA" name="*"/> + <packagedElement xmi:type="uml:Interface" xmi:id="_yYT3cFBbEeeAb79RbYsirA" name="Protocol1IO"/> + <packagedElement xmi:type="uml:Usage" xmi:id="_yYZXAFBbEeeAb79RbYsirA" client="_yXafkFBbEeeAb79RbYsirA" supplier="_yYT3cFBbEeeAb79RbYsirA"/> + <packagedElement xmi:type="uml:CallEvent" xmi:id="_15v94FBbEeeAb79RbYsirA" operation="_15TR8FBbEeeAb79RbYsirA"/> + <packagedElement xmi:type="uml:CallEvent" xmi:id="_3L2e8FBbEeeAb79RbYsirA" operation="_3LujIFBbEeeAb79RbYsirA"/> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_4vgqEFBbEeeAb79RbYsirA" name="Protocol2"> + <packagedElement xmi:type="uml:Collaboration" xmi:id="_4veN0FBbEeeAb79RbYsirA" name="Protocol2"> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_4vol4FBbEeeAb79RbYsirA" client="_4veN0FBbEeeAb79RbYsirA" supplier="_4vk7gFBbEeeAb79RbYsirA" contract="_4vk7gFBbEeeAb79RbYsirA"/> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_4vxIwFBbEeeAb79RbYsirA" client="_4veN0FBbEeeAb79RbYsirA" supplier="_4vuFcFBbEeeAb79RbYsirA" contract="_4vuFcFBbEeeAb79RbYsirA"/> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="_4vk7gFBbEeeAb79RbYsirA" name="Protocol2"> + <ownedOperation xmi:type="uml:Operation" xmi:id="_5_7wIFBbEeeAb79RbYsirA" name="m1"/> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="_4vpM8FBbEeeAb79RbYsirA" name="Protocol2~"/> + <packagedElement xmi:type="uml:Usage" xmi:id="_4vs3UFBbEeeAb79RbYsirA" client="_4veN0FBbEeeAb79RbYsirA" supplier="_4vpM8FBbEeeAb79RbYsirA"/> + <packagedElement xmi:type="uml:AnyReceiveEvent" xmi:id="_4vteYFBbEeeAb79RbYsirA" name="*"/> + <packagedElement xmi:type="uml:Interface" xmi:id="_4vuFcFBbEeeAb79RbYsirA" name="Protocol2IO"/> + <packagedElement xmi:type="uml:Usage" xmi:id="_4vyW4FBbEeeAb79RbYsirA" client="_4veN0FBbEeeAb79RbYsirA" supplier="_4vuFcFBbEeeAb79RbYsirA"/> + <packagedElement xmi:type="uml:CallEvent" xmi:id="_6ADE4FBbEeeAb79RbYsirA" operation="_5_7wIFBbEeeAb79RbYsirA"/> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_r6gtk1BbEeeAb79RbYsirA"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_r6gtlFBbEeeAb79RbYsirA" 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> + <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_r6gtlVBbEeeAb79RbYsirA"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_r6gtllBbEeeAb79RbYsirA" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/umlrt/statemachine#/"/> + </eAnnotations> + <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_RT_PROFILE/UMLRealTimeSM-addendum.profile.uml#_KLcn0FDtEeOA4ecmvfqvaw"/> + </profileApplication> + <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_r6gtl1BbEeeAb79RbYsirA"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_r6gtmFBbEeeAb79RbYsirA" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/umlrt/cppproperties#/"/> + </eAnnotations> + <appliedProfile xmi:type="uml:Profile" href="pathmap://UMLRT_CPP/RTCppProperties.profile.uml#_vl5LALs8EeSTjNEQkASznQ"/> + </profileApplication> + </uml:Model> + <UMLRealTime:Capsule xmi:id="_vhOVkFBbEeeAb79RbYsirA" base_Class="_vdLjEFBbEeeAb79RbYsirA"/> + <UMLRealTime:RTPort xmi:id="_x-Ic4FBbEeeAb79RbYsirA" isPublish="false" isWired="true" base_Port="_x9otoFBbEeeAb79RbYsirA"/> + <UMLRealTime:ProtocolContainer xmi:id="_yYHqMFBbEeeAb79RbYsirA" base_Package="_yYF1AFBbEeeAb79RbYsirA"/> + <UMLRealTime:RTMessageSet xmi:id="_yYL7oFBbEeeAb79RbYsirA" base_Interface="_yYKGcFBbEeeAb79RbYsirA"/> + <UMLRealTime:RTMessageSet xmi:id="_yYQ0IFBbEeeAb79RbYsirA" base_Interface="_yYO-8FBbEeeAb79RbYsirA" rtMsgKind="out"/> + <UMLRealTime:RTMessageSet xmi:id="_yYW6wFBbEeeAb79RbYsirA" base_Interface="_yYT3cFBbEeeAb79RbYsirA" rtMsgKind="inOut"/> + <UMLRealTime:Protocol xmi:id="_yYZ-EFBbEeeAb79RbYsirA" base_Collaboration="_yXafkFBbEeeAb79RbYsirA"/> + <UMLRealTime:RTPort xmi:id="_4cUoUFBbEeeAb79RbYsirA" isPublish="false" isWired="true" base_Port="_4cQ98FBbEeeAb79RbYsirA"/> + <UMLRealTime:ProtocolContainer xmi:id="_4vjGUFBbEeeAb79RbYsirA" base_Package="_4vgqEFBbEeeAb79RbYsirA"/> + <UMLRealTime:RTMessageSet xmi:id="_4vnXwFBbEeeAb79RbYsirA" base_Interface="_4vk7gFBbEeeAb79RbYsirA"/> + <UMLRealTime:RTMessageSet xmi:id="_4vrpMFBbEeeAb79RbYsirA" base_Interface="_4vpM8FBbEeeAb79RbYsirA" rtMsgKind="out"/> + <UMLRealTime:RTMessageSet xmi:id="_4vwhsFBbEeeAb79RbYsirA" base_Interface="_4vuFcFBbEeeAb79RbYsirA" rtMsgKind="inOut"/> + <UMLRealTime:Protocol xmi:id="_4vy98FBbEeeAb79RbYsirA" base_Collaboration="_4veN0FBbEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTPseudostate xmi:id="_7C7eMFBbEeeAb79RbYsirA" base_Pseudostate="_7C3MwFBbEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTState xmi:id="_7DBk0FBbEeeAb79RbYsirA" base_State="_7C_IkFBbEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTRegion xmi:id="_7DF2QFBbEeeAb79RbYsirA" base_Region="_7CyUQFBbEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTStateMachine xmi:id="_7DNyEFBbEeeAb79RbYsirA" base_StateMachine="_7CYroFBbEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTState xmi:id="_-FHc0FBbEeeAb79RbYsirA" base_State="_-FEZgFBbEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTState xmi:id="_-i-dgFBbEeeAb79RbYsirA" base_State="_-i8BQFBbEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTState xmi:id="__BsZ0FBbEeeAb79RbYsirA" base_State="__BqkoFBbEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTState xmi:id="_B38OMFBcEeeAb79RbYsirA" base_State="_B36ZAFBcEeeAb79RbYsirA"/> +</xmi:XMI> diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/CMakeLists.txt b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/CMakeLists.txt new file mode 100644 index 000000000..ab0466fc1 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/CMakeLists.txt @@ -0,0 +1,36 @@ +# Generated 2017-06-13 13:18:42 + +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 Top.cc TopControllers.cc Protocol2.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/statemachines/AmbiguousTransitions1/expected_src/Makefile b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Makefile new file mode 100644 index 000000000..0bcbd2251 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/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/statemachines/AmbiguousTransitions1/expected_src/MakefileTop.mk b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/MakefileTop.mk new file mode 100644 index 000000000..6d30fd436 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/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 Top.cc TopControllers.cc Protocol2.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/statemachines/AmbiguousTransitions1/expected_src/Protocol1.cc b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Protocol1.cc new file mode 100644 index 000000000..e5ff89666 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Protocol1.cc @@ -0,0 +1,82 @@ + +#include "Protocol1.hh" + +#include "umlrtobjectclass.hh" +#include "umlrtoutsignal.hh" +struct UMLRTCommsPort; + +static UMLRTObject_field fields_m1[] = +{ + #ifdef NEED_NON_FLEXIBLE_ARRAY + { + 0, + 0, + 0, + 0, + 0 + } + #endif +}; + +static UMLRTObject payload_m1 = +{ + 0, + #ifdef NEED_NON_FLEXIBLE_ARRAY + 1 + #else + 0 + #endif + , + fields_m1 +}; + +static UMLRTObject_field fields_m2[] = +{ + #ifdef NEED_NON_FLEXIBLE_ARRAY + { + 0, + 0, + 0, + 0, + 0 + } + #endif +}; + +static UMLRTObject payload_m2 = +{ + 0, + #ifdef NEED_NON_FLEXIBLE_ARRAY + 1 + #else + 0 + #endif + , + fields_m2 +}; + +Protocol1::Base::Base( const UMLRTCommsPort * & srcPort ) +: UMLRTProtocol( srcPort ) +{ +} + +Protocol1::Conj::Conj( const UMLRTCommsPort * & srcPort ) +: UMLRTProtocol( srcPort ) +{ +} + +UMLRTOutSignal Protocol1::Conj::m1() const +{ + UMLRTOutSignal signal; + signal.initialize( "m1", signal_m1, srcPort, &payload_m1 ); + return signal; +} + +UMLRTOutSignal Protocol1::Conj::m2() const +{ + UMLRTOutSignal signal; + signal.initialize( "m2", signal_m2, srcPort, &payload_m2 ); + return signal; +} + + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Protocol1.hh b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Protocol1.hh new file mode 100644 index 000000000..5786c0dd6 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Protocol1.hh @@ -0,0 +1,32 @@ + +#ifndef PROTOCOL1_HH +#define PROTOCOL1_HH + +#include "umlrtoutsignal.hh" +#include "umlrtprotocol.hh" +#include "umlrtsignal.hh" +struct UMLRTCommsPort; + +namespace Protocol1 +{ + class Base : public UMLRTProtocol + { + public: + Base( const UMLRTCommsPort * & srcPort ); + }; + class Conj : public UMLRTProtocol + { + public: + Conj( const UMLRTCommsPort * & srcPort ); + UMLRTOutSignal m1() const; + UMLRTOutSignal m2() const; + }; + enum SignalId + { + signal_m1 = UMLRTSignal::FIRST_PROTOCOL_SIGNAL_ID, + signal_m2 + }; +}; + +#endif + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Protocol2.cc b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Protocol2.cc new file mode 100644 index 000000000..d83d7ab74 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Protocol2.cc @@ -0,0 +1,50 @@ + +#include "Protocol2.hh" + +#include "umlrtobjectclass.hh" +#include "umlrtoutsignal.hh" +struct UMLRTCommsPort; + +static UMLRTObject_field fields_m1[] = +{ + #ifdef NEED_NON_FLEXIBLE_ARRAY + { + 0, + 0, + 0, + 0, + 0 + } + #endif +}; + +static UMLRTObject payload_m1 = +{ + 0, + #ifdef NEED_NON_FLEXIBLE_ARRAY + 1 + #else + 0 + #endif + , + fields_m1 +}; + +Protocol2::Base::Base( const UMLRTCommsPort * & srcPort ) +: UMLRTProtocol( srcPort ) +{ +} + +Protocol2::Conj::Conj( const UMLRTCommsPort * & srcPort ) +: UMLRTProtocol( srcPort ) +{ +} + +UMLRTOutSignal Protocol2::Conj::m1() const +{ + UMLRTOutSignal signal; + signal.initialize( "m1", signal_m1, srcPort, &payload_m1 ); + return signal; +} + + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Protocol2.hh b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Protocol2.hh new file mode 100644 index 000000000..58c0212a0 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Protocol2.hh @@ -0,0 +1,30 @@ + +#ifndef PROTOCOL2_HH +#define PROTOCOL2_HH + +#include "umlrtoutsignal.hh" +#include "umlrtprotocol.hh" +#include "umlrtsignal.hh" +struct UMLRTCommsPort; + +namespace Protocol2 +{ + class Base : public UMLRTProtocol + { + public: + Base( const UMLRTCommsPort * & srcPort ); + }; + enum SignalId + { + signal_m1 = UMLRTSignal::FIRST_PROTOCOL_SIGNAL_ID + }; + class Conj : public UMLRTProtocol + { + public: + Conj( const UMLRTCommsPort * & srcPort ); + UMLRTOutSignal m1() const; + }; +}; + +#endif + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Top-connections.log b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Top-connections.log new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Top-connections.log diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Top.cc b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Top.cc new file mode 100644 index 000000000..0a87759cd --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Top.cc @@ -0,0 +1,269 @@ + +#include "Top.hh" + +#include "Protocol1.hh" +#include "Protocol2.hh" +#include "umlrtcapsuleclass.hh" +#include "umlrtcommsportrole.hh" +#include "umlrtmessage.hh" +#include "umlrtslot.hh" +#include <cstddef> +#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 ) +, protocol1( borderPorts[borderport_protocol1] ) +, protocol2( borderPorts[borderport_protocol2] ) +, currentState( SPECIAL_INTERNAL_STATE_UNVISITED ) +{ + stateNames[State1] = "State1"; + stateNames[State2] = "State2"; + stateNames[State3] = "State3"; + stateNames[State4] = "State4"; + stateNames[State5] = "State5"; + stateNames[SPECIAL_INTERNAL_STATE_TOP] = "<top>"; + stateNames[SPECIAL_INTERNAL_STATE_UNVISITED] = "<uninitialized>"; +} + + + + + + +void Capsule_Top::bindPort( bool isBorder, int portId, int index ) +{ + if( isBorder ) + switch( portId ) + { + case borderport_protocol1: + UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_protocol1, index, true ); + break; + case borderport_protocol2: + UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_protocol2, index, true ); + break; + } +} + +void Capsule_Top::unbindPort( bool isBorder, int portId, int index ) +{ + if( isBorder ) + switch( portId ) + { + case borderport_protocol1: + UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_protocol1, index, false ); + UMLRTFrameService::disconnectPort( borderPorts[borderport_protocol1], index ); + break; + case borderport_protocol2: + UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_protocol2, index, false ); + UMLRTFrameService::disconnectPort( borderPorts[borderport_protocol2], index ); + break; + } +} + +void Capsule_Top::inject( const UMLRTMessage & message ) +{ + msg = &message; + switch( currentState ) + { + case State1: + currentState = state_____State1( &message ); + break; + case State2: + currentState = state_____State2( &message ); + break; + case State3: + currentState = state_____State3( &message ); + break; + case State4: + currentState = state_____State4( &message ); + break; + case State5: + currentState = state_____State5( &message ); + break; + default: + break; + } +} + +void Capsule_Top::initialize( const UMLRTMessage & message ) +{ + msg = &message; + actionchain_____Initial( &message ); + currentState = State1; +} + +const char * Capsule_Top::getCurrentStateString() const +{ + return stateNames[currentState]; +} + + + + +void Capsule_Top::update_state( Capsule_Top::State newState ) +{ + currentState = newState; +} + +void Capsule_Top::actionchain_____Initial( const UMLRTMessage * msg ) +{ + update_state( State1 ); +} + +void Capsule_Top::actionchain_____transition1( const UMLRTMessage * msg ) +{ + update_state( SPECIAL_INTERNAL_STATE_TOP ); + update_state( State2 ); +} + +void Capsule_Top::actionchain_____transition2( const UMLRTMessage * msg ) +{ + update_state( SPECIAL_INTERNAL_STATE_TOP ); + update_state( State3 ); +} + +void Capsule_Top::actionchain_____transition3( const UMLRTMessage * msg ) +{ + update_state( SPECIAL_INTERNAL_STATE_TOP ); + update_state( State4 ); +} + +void Capsule_Top::actionchain_____transition4( const UMLRTMessage * msg ) +{ + update_state( SPECIAL_INTERNAL_STATE_TOP ); + update_state( State5 ); +} + +Capsule_Top::State Capsule_Top::state_____State1( const UMLRTMessage * msg ) +{ + switch( msg->destPort->role()->id ) + { + case port_protocol1: + switch( msg->getSignalId() ) + { + case Protocol1::signal_m1: + actionchain_____transition1( msg ); + return State2; + case Protocol1::signal_m2: + actionchain_____transition2( msg ); + return State3; + default: + this->unexpectedMessage(); + break; + } + return currentState; + case port_protocol2: + switch( msg->getSignalId() ) + { + case Protocol2::signal_m1: + actionchain_____transition3( msg ); + return State4; + default: + this->unexpectedMessage(); + break; + } + return currentState; + default: + this->unexpectedMessage(); + break; + } + return currentState; +} + +Capsule_Top::State Capsule_Top::state_____State2( const UMLRTMessage * msg ) +{ + switch( msg->destPort->role()->id ) + { + default: + this->unexpectedMessage(); + break; + } + return currentState; +} + +Capsule_Top::State Capsule_Top::state_____State3( const UMLRTMessage * msg ) +{ + switch( msg->destPort->role()->id ) + { + default: + this->unexpectedMessage(); + break; + } + return currentState; +} + +Capsule_Top::State Capsule_Top::state_____State4( const UMLRTMessage * msg ) +{ + switch( msg->destPort->role()->id ) + { + default: + this->unexpectedMessage(); + break; + } + return currentState; +} + +Capsule_Top::State Capsule_Top::state_____State5( const UMLRTMessage * msg ) +{ + switch( msg->destPort->role()->id ) + { + default: + this->unexpectedMessage(); + break; + } + return currentState; +} + + +static const UMLRTCommsPortRole portroles_border[] = +{ + { + Capsule_Top::port_protocol1, + "Protocol1", + "protocol1", + "", + 1, + true, + false, + false, + false, + false, + false, + true + }, + { + Capsule_Top::port_protocol2, + "Protocol2", + "protocol2", + "", + 1, + true, + false, + false, + false, + false, + false, + true + } +}; + +static void instantiate_Top( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts ) +{ + slot->capsule = new Capsule_Top( &Top, slot, borderPorts, NULL, false ); +} + +const UMLRTCapsuleClass Top = +{ + "Top", + NULL, + instantiate_Top, + 0, + NULL, + 2, + portroles_border, + 0, + NULL +}; + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Top.hh b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Top.hh new file mode 100644 index 000000000..8f62b794f --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/Top.hh @@ -0,0 +1,69 @@ + +#ifndef TOP_HH +#define TOP_HH + +#include "Protocol1.hh" +#include "Protocol2.hh" +#include "umlrtcapsule.hh" +#include "umlrtcapsuleclass.hh" +#include "umlrtmessage.hh" +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 ); +protected: + Protocol1::Base protocol1; +public: + enum BorderPortId + { + borderport_protocol1, + borderport_protocol2 + }; +protected: + Protocol2::Base protocol2; +public: + enum PartId + { + }; + enum PortId + { + port_protocol1, + port_protocol2 + }; + virtual void bindPort( bool isBorder, int portId, int index ); + virtual void unbindPort( bool isBorder, int portId, int index ); + virtual void inject( const UMLRTMessage & message ); + virtual void initialize( const UMLRTMessage & message ); + const char * getCurrentStateString() const; +private: + enum State + { + State1, + State2, + State3, + State4, + State5, + SPECIAL_INTERNAL_STATE_TOP, + SPECIAL_INTERNAL_STATE_UNVISITED + }; + const char * stateNames[7]; + State currentState; + void update_state( State newState ); + void actionchain_____Initial( const UMLRTMessage * msg ); + void actionchain_____transition1( const UMLRTMessage * msg ); + void actionchain_____transition2( const UMLRTMessage * msg ); + void actionchain_____transition3( const UMLRTMessage * msg ); + void actionchain_____transition4( const UMLRTMessage * msg ); + State state_____State1( const UMLRTMessage * msg ); + State state_____State2( const UMLRTMessage * msg ); + State state_____State3( const UMLRTMessage * msg ); + State state_____State4( const UMLRTMessage * msg ); + State state_____State5( const UMLRTMessage * msg ); +}; +extern const UMLRTCapsuleClass Top; + +#endif + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/TopControllers.cc b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/TopControllers.cc new file mode 100644 index 000000000..b3ecea73a --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/TopControllers.cc @@ -0,0 +1,102 @@ + +#include "TopControllers.hh" + +#include "Top.hh" +#include "umlrtcapsuleclass.hh" +#include "umlrtcommsport.hh" +#include "umlrtcommsportfarend.hh" +#include "umlrtcontroller.hh" +#include "umlrtslot.hh" +#include <cstddef> + + +static UMLRTController DefaultController_( "DefaultController" ); + +UMLRTController * DefaultController = &DefaultController_; + +static UMLRTCommsPortFarEnd borderfarEndList_Top[] = +{ + { + 0, + NULL + }, + { + 0, + NULL + } +}; + +UMLRTCommsPort borderports_Top[] = +{ + { + &Top, + Capsule_Top::borderport_protocol1, + &Top_slots[InstId_Top], + 1, + borderfarEndList_Top, + NULL, + NULL, + "", + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + true + }, + { + &Top, + Capsule_Top::borderport_protocol2, + &Top_slots[InstId_Top], + 1, + &borderfarEndList_Top[1], + NULL, + NULL, + "", + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + true + } +}; + +static const UMLRTCommsPort * borderports_Top_ptrs[] = +{ + &borderports_Top[0], + &borderports_Top[1] +}; + +static Capsule_Top top( &Top, &Top_slots[InstId_Top], borderports_Top_ptrs, NULL, true ); + +UMLRTSlot Top_slots[] = +{ + { + "Top", + 0, + &Top, + NULL, + 0, + &top, + &DefaultController_, + 0, + NULL, + 2, + borderports_Top, + NULL, + true, + false + } +}; + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/TopControllers.hh b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/TopControllers.hh new file mode 100644 index 000000000..0d5aac67e --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/TopControllers.hh @@ -0,0 +1,18 @@ + +#ifndef TOPCONTROLLERS_HH +#define TOPCONTROLLERS_HH + +class UMLRTController; +struct UMLRTCommsPort; +struct UMLRTSlot; + +enum CapsuleInstanceId +{ + InstId_Top +}; +extern UMLRTController * DefaultController; +extern UMLRTCommsPort borderports_Top[]; +extern UMLRTSlot Top_slots[]; + +#endif + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/TopMain.cc b/models/tests/codepattern/statemachines/AmbiguousTransitions1/expected_src/TopMain.cc new file mode 100644 index 000000000..bf88ec44f --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions1/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, 1 ); + + 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/statemachines/AmbiguousTransitions2/.project b/models/tests/codepattern/statemachines/AmbiguousTransitions2/.project new file mode 100644 index 000000000..be6b9aaa9 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/.project @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>AmbiguousTransitions2</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions2/AmbiguousTransitions2.di b/models/tests/codepattern/statemachines/AmbiguousTransitions2/AmbiguousTransitions2.di new file mode 100644 index 000000000..47e812dba --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/AmbiguousTransitions2.di @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<architecture:ArchitectureDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" contextId="org.eclipse.papyrusrt.umlrt.architecture"/> diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions2/AmbiguousTransitions2.notation b/models/tests/codepattern/statemachines/AmbiguousTransitions2/AmbiguousTransitions2.notation new file mode 100644 index 000000000..78e0ffc02 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/AmbiguousTransitions2.notation @@ -0,0 +1,797 @@ +<?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: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/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML"> + <notation:Diagram xmi:id="_9OAuUFBeEeeAb79RbYsirA" type="CompositeStructure" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_9OBVYFBeEeeAb79RbYsirA" type="Class_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_9OB8cFBeEeeAb79RbYsirA" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_9OB8cVBeEeeAb79RbYsirA" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_9OB8clBeEeeAb79RbYsirA" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_9OB8c1BeEeeAb79RbYsirA" type="Class_StructureCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_9OB8dFBeEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9OB8dVBeEeeAb79RbYsirA"/> + </children> + <element xmi:type="uml:Class" href="AmbiguousTransitions2.uml#_9LLcwFBeEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9OBVYVBeEeeAb79RbYsirA" x="40" y="40" width="500" height="250"/> + </children> + <styles xmi:type="notation:StringValueStyle" xmi:id="_9OAuUVBeEeeAb79RbYsirA" name="diagram_compatibility_version" stringValue="1.3.0"/> + <styles xmi:type="notation:DiagramStyle" xmi:id="_9OAuUlBeEeeAb79RbYsirA"/> + <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_9OAuU1BeEeeAb79RbYsirA" diagramKindId="org.eclipse.papyrusrt.umlrt.tooling.diagram.common.UMLRTCapsuleStructure"> + <owner xmi:type="uml:Class" href="AmbiguousTransitions2.uml#_9LLcwFBeEeeAb79RbYsirA"/> + </styles> + <element xmi:type="uml:Class" href="AmbiguousTransitions2.uml#_9LLcwFBeEeeAb79RbYsirA"/> + </notation:Diagram> + <notation:Diagram xmi:id="_BlnAsFBfEeeAb79RbYsirA" type="PapyrusUMLStateMachineDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_BlnAsVBfEeeAb79RbYsirA" type="StateMachine_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_BlnAslBfEeeAb79RbYsirA" type="StateMachine_NameLabel"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BlnAs1BfEeeAb79RbYsirA" width="700" height="16"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_BlnAtFBfEeeAb79RbYsirA" type="StateMachine_RegionCompartment"> + <children xmi:type="notation:Shape" xmi:id="_BlnAtVBfEeeAb79RbYsirA" type="Region_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BlnAtlBfEeeAb79RbYsirA" source="RegionAnnotationKey"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BlnAt1BfEeeAb79RbYsirA" key="RegionZoneKey" value=""/> + </eAnnotations> + <children xmi:type="notation:BasicCompartment" xmi:id="_BlnAuFBfEeeAb79RbYsirA" type="Region_SubvertexCompartment"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CVYQwFBfEeeAb79RbYsirA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CVY30FBfEeeAb79RbYsirA" key="mutable" value="true"/> + </eAnnotations> + <children xmi:type="notation:Shape" xmi:id="_CMbJEFBfEeeAb79RbYsirA" type="Pseudostate_InitialShape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CVY30VBfEeeAb79RbYsirA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CVY30lBfEeeAb79RbYsirA" key="mutable" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_CMbJElBfEeeAb79RbYsirA" type="Pseudostate_InitialFloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_CMbJE1BfEeeAb79RbYsirA" x="25" y="3"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_CMbJFFBfEeeAb79RbYsirA" type="Pseudostate_InitialStereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_CMbJFVBfEeeAb79RbYsirA" x="25" y="-10"/> + </children> + <element xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_BlcooFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CMbJEVBfEeeAb79RbYsirA" x="9" y="-6"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_CMbJFlBfEeeAb79RbYsirA" type="State_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CVY301BfEeeAb79RbYsirA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CVY31FBfEeeAb79RbYsirA" key="mutable" value="true"/> + </eAnnotations> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bmvnUFBfEeeAb79RbYsirA" source="PapyrusHyperLink_Page" references="_bmo5oFBfEeeAb79RbYsirA"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bmvnUVBfEeeAb79RbYsirA" key="tooltip_text" value="Top..State1"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bmvnUlBfEeeAb79RbYsirA" key="pageName" value="Top..State1"/> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bmvnU1BfEeeAb79RbYsirA" key="is_default_navigation" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_CMbJGFBfEeeAb79RbYsirA" type="State_NameLabel"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OzErEFBgEeeAb79RbYsirA" width="81"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_CMbwIFBfEeeAb79RbYsirA" type="State_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_CMbwIVBfEeeAb79RbYsirA" x="40"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_CMbwIlBfEeeAb79RbYsirA" type="State_RegionCompartment"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CMbwI1BfEeeAb79RbYsirA" y="-1" width="81"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="_CMbwJFBfEeeAb79RbYsirA" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CMbwJVBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_CMnWUFBfEeeAb79RbYsirA" type="StereotypeLabel"> + <styles xmi:type="notation:StringValueStyle" xmi:id="_CMnWUVBfEeeAb79RbYsirA" name="stereotype" stringValue="UMLRTStateMachines::RTState"/> + <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/UMLRealTimeSM-addendum.profile.uml#_KKLAAFDuEeOA4ecmvfqvaw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CMnWUlBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_CMnWU1BfEeeAb79RbYsirA" type="StereotypeBrace"> + <styles xmi:type="notation:TitleStyle" xmi:id="_CMnWVFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_CMnWVVBfEeeAb79RbYsirA" name="stereotype" stringValue="UMLRTStateMachines::RTState"/> + <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/UMLRealTimeSM-addendum.profile.uml#_KKLAAFDuEeOA4ecmvfqvaw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CMnWVlBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_CMn9YFBfEeeAb79RbYsirA" type="compartment_shape_display"> + <styles xmi:type="notation:TitleStyle" xmi:id="_CMn9YVBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CMn9YlBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_CMn9cVBfEeeAb79RbYsirA" type="StereotypeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_CMn9clBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_CMn9c1BfEeeAb79RbYsirA" name="stereotype" stringValue="UMLRTStateMachines::RTState"/> + <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/UMLRealTimeSM-addendum.profile.uml#_KKLAAFDuEeOA4ecmvfqvaw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CMn9dFBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_bm28EFBfEeeAb79RbYsirA" type="Pseudostate_EntryPointShape"> + <children xmi:type="notation:DecorationNode" xmi:id="_bm28ElBfEeeAb79RbYsirA" type="Pseudostate_EntryPointFloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_bm28E1BfEeeAb79RbYsirA" x="25" y="3"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_bm28FFBfEeeAb79RbYsirA" type="Pseudostate_EntryPointStereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_bm28FVBfEeeAb79RbYsirA" x="25" y="-10"/> + </children> + <element xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bmw1cFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bm28EVBfEeeAb79RbYsirA" x="10" y="-5" width="10" height="10"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_bm7NgFBfEeeAb79RbYsirA" type="Pseudostate_ExitPointShape"> + <children xmi:type="notation:DecorationNode" xmi:id="_bm7NglBfEeeAb79RbYsirA" type="Pseudostate_ExitPointFloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_bm7Ng1BfEeeAb79RbYsirA" x="25" y="3"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_bm70kFBfEeeAb79RbYsirA" type="Pseudostate_ExitPointStereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_bm70kVBfEeeAb79RbYsirA" x="25" y="-10"/> + </children> + <element xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bm4xQFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bm7NgVBfEeeAb79RbYsirA" x="76" y="8" width="10" height="10"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_bm-34FBfEeeAb79RbYsirA" type="Pseudostate_ExitPointShape"> + <children xmi:type="notation:DecorationNode" xmi:id="_bm_e8VBfEeeAb79RbYsirA" type="Pseudostate_ExitPointFloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_bm_e8lBfEeeAb79RbYsirA" x="25" y="3"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_bm_e81BfEeeAb79RbYsirA" type="Pseudostate_ExitPointStereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_bm_e9FBfEeeAb79RbYsirA" x="25" y="-10"/> + </children> + <element xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bm8boFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bm_e8FBfEeeAb79RbYsirA" x="75" y="29" width="10" height="10"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_19cOQFBfEeeAb79RbYsirA" type="Pseudostate_ExitPointShape"> + <children xmi:type="notation:DecorationNode" xmi:id="_19c1UFBfEeeAb79RbYsirA" type="Pseudostate_ExitPointFloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_19c1UVBfEeeAb79RbYsirA" x="25" y="3"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_19c1UlBfEeeAb79RbYsirA" type="Pseudostate_ExitPointStereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_19c1U1BfEeeAb79RbYsirA" x="25" y="-10"/> + </children> + <element xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_18bhoFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_19cOQVBfEeeAb79RbYsirA" x="76" y="49" width="10" height="10"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions2.uml#_BlgTAFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CMbJF1BfEeeAb79RbYsirA" x="109" y="114" width="81" height="75"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_CMh2w1BfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_CMh2xFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_CMh2xlBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_BlcooFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CMh2xVBfEeeAb79RbYsirA" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_CMn9Y1BfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_CMn9ZFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_CMn9ZlBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions2.uml#_BlgTAFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CMn9ZVBfEeeAb79RbYsirA" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_DKkMUFBfEeeAb79RbYsirA" type="State_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_DKkMUlBfEeeAb79RbYsirA" type="State_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_DKkMU1BfEeeAb79RbYsirA" type="State_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_DKkMVFBfEeeAb79RbYsirA" x="40"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_DKkMVVBfEeeAb79RbYsirA" type="State_RegionCompartment"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DKkMVlBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="_DKkMV1BfEeeAb79RbYsirA" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DKkMWFBfEeeAb79RbYsirA"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions2.uml#_DKWw8FBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DKkMUVBfEeeAb79RbYsirA" x="329" y="54"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_DKvLc1BfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_DKvLdFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_DKvLdlBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions2.uml#_DKWw8FBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DKvLdVBfEeeAb79RbYsirA" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_DkK_IFBfEeeAb79RbYsirA" type="State_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_DkK_IlBfEeeAb79RbYsirA" type="State_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_DkK_I1BfEeeAb79RbYsirA" type="State_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_DkLmMFBfEeeAb79RbYsirA" x="40"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_DkLmMVBfEeeAb79RbYsirA" type="State_RegionCompartment"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DkLmMlBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="_DkLmM1BfEeeAb79RbYsirA" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DkLmNFBfEeeAb79RbYsirA"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions2.uml#_Dj7ukFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DkK_IVBfEeeAb79RbYsirA" x="329" y="128"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_DkUwJ1BfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_DkUwKFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_DkUwKlBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions2.uml#_Dj7ukFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DkUwKVBfEeeAb79RbYsirA" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_ZxKlwFBfEeeAb79RbYsirA" type="State_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_ZxKlwlBfEeeAb79RbYsirA" type="State_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_ZxKlw1BfEeeAb79RbYsirA" type="State_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ZxKlxFBfEeeAb79RbYsirA" x="40"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_ZxKlxVBfEeeAb79RbYsirA" type="State_RegionCompartment"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZxKlxlBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="_ZxKlx1BfEeeAb79RbYsirA" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZxKlyFBfEeeAb79RbYsirA"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions2.uml#_Zw1OkFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZxKlwVBfEeeAb79RbYsirA" x="329" y="194"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_ZxUWx1BfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_ZxUWyFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ZxUWylBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions2.uml#_Zw1OkFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZxUWyVBfEeeAb79RbYsirA" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_bq9Y81BfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_bq9Y9FBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_bq9Y9lBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bmw1cFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bq9Y9VBfEeeAb79RbYsirA" x="210" y="-5"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_brDfk1BfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_brDflFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_brDfllBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bm4xQFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_brDflVBfEeeAb79RbYsirA" x="235" y="10"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_brKNQFBfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_brKNQVBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_brKNQ1BfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bm8boFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_brKNQlBfEeeAb79RbYsirA" x="235" y="20"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_196vY1BfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_196vZFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_196vZlBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_18bhoFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_196vZVBfEeeAb79RbYsirA" x="195" y="35"/> + </children> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BlnAuVBfEeeAb79RbYsirA"/> + </children> + <element xmi:type="uml:Region" href="AmbiguousTransitions2.uml#_BlaMYFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BlnAulBfEeeAb79RbYsirA" width="700" height="280"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_CMW3oFBfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_CMW3oVBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_CMXesFBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Region" href="AmbiguousTransitions2.uml#_BlaMYFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CMW3olBfEeeAb79RbYsirA" x="200"/> + </children> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BlnAu1BfEeeAb79RbYsirA" y="16" width="700" height="284"/> + </children> + <element xmi:type="uml:StateMachine" href="AmbiguousTransitions2.uml#_BlUs0FBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BlnAvFBfEeeAb79RbYsirA" x="30" y="30" width="700" height="300"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_CMSmMFBfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_CMSmMVBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_CMSmM1BfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:StateMachine" href="AmbiguousTransitions2.uml#_BlUs0FBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CMSmMlBfEeeAb79RbYsirA" x="230" y="30"/> + </children> + <styles xmi:type="notation:StringValueStyle" xmi:id="_BlnAvVBfEeeAb79RbYsirA" name="diagram_compatibility_version" stringValue="1.3.0"/> + <styles xmi:type="notation:DiagramStyle" xmi:id="_BlnAvlBfEeeAb79RbYsirA"/> + <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_BlnAv1BfEeeAb79RbYsirA" diagramKindId="org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine.UMLRTStateMachine"> + <owner xmi:type="uml:StateMachine" href="AmbiguousTransitions2.uml#_BlUs0FBfEeeAb79RbYsirA"/> + </styles> + <element xmi:type="uml:StateMachine" href="AmbiguousTransitions2.uml#_BlUs0FBfEeeAb79RbYsirA"/> + <edges xmi:type="notation:Connector" xmi:id="_CMSmNFBfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_BlnAsVBfEeeAb79RbYsirA" target="_CMSmMFBfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_CMSmNVBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_CMTNQFBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:StateMachine" href="AmbiguousTransitions2.uml#_BlUs0FBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CMSmNlBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CMSmN1BfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CMSmOFBfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_CMXesVBfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_BlnAtVBfEeeAb79RbYsirA" target="_CMW3oFBfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_CMXeslBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_CMXetlBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Region" href="AmbiguousTransitions2.uml#_BlaMYFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CMXes1BfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CMXetFBfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CMXetVBfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_CMh2x1BfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_CMbJEFBfEeeAb79RbYsirA" target="_CMh2w1BfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_CMh2yFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_CMh2zFBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_BlcooFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CMh2yVBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CMh2ylBfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CMh2y1BfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_CMn9Z1BfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_CMbJFlBfEeeAb79RbYsirA" target="_CMn9Y1BfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_CMn9aFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_CMn9bFBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions2.uml#_BlgTAFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CMn9aVBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CMn9alBfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CMn9a1BfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_CVHLAFBfEeeAb79RbYsirA" type="Transition_Edge" source="_CMbJEFBfEeeAb79RbYsirA" target="_bm28EFBfEeeAb79RbYsirA"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CXABYFBfEeeAb79RbYsirA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CXABYVBfEeeAb79RbYsirA" key="mutable" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_CVHLA1BfEeeAb79RbYsirA" type="Transition_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_CpmNQFBfEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_CVHLBFBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_CVHLBVBfEeeAb79RbYsirA" type="Transition_GuardLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_CpxzcFBfEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_CVHLBlBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_CVHLB1BfEeeAb79RbYsirA" type="Transition_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Cp69YFBfEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_CVHLCFBfEeeAb79RbYsirA" y="59"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_CVHLAVBfEeeAb79RbYsirA"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions2.uml#_BljWUFBfEeeAb79RbYsirA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CVHLAlBfEeeAb79RbYsirA" points="[40, 46, -643984, -643984]$[40, 46, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CVHLCVBfEeeAb79RbYsirA" id="(0.0,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CVHLClBfEeeAb79RbYsirA" id="(0.0,0.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_DKvLd1BfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_DKkMUFBfEeeAb79RbYsirA" target="_DKvLc1BfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_DKvLeFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_DKvLfFBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions2.uml#_DKWw8FBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DKvLeVBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DKvLelBfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DKvLe1BfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_DkUwK1BfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_DkK_IFBfEeeAb79RbYsirA" target="_DkUwJ1BfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_DkUwLFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_DkVXMlBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions2.uml#_Dj7ukFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DkUwLVBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DkVXMFBfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DkVXMVBfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_X5qRkFBfEeeAb79RbYsirA" type="Transition_Edge" source="_bm7NgFBfEeeAb79RbYsirA" target="_DKkMUFBfEeeAb79RbYsirA"> + <children xmi:type="notation:DecorationNode" xmi:id="_X5qRk1BfEeeAb79RbYsirA" type="Transition_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Yh4IIFBfEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_X5qRlFBfEeeAb79RbYsirA" x="-22" y="-8"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_X5qRlVBfEeeAb79RbYsirA" type="Transition_GuardLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_YiLDEFBfEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_X5qRllBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_X5qRl1BfEeeAb79RbYsirA" type="Transition_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Yid-AFBfEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_X5qRmFBfEeeAb79RbYsirA" y="59"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_X5qRkVBfEeeAb79RbYsirA"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions2.uml#_X5Zy4FBfEeeAb79RbYsirA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_X5qRklBfEeeAb79RbYsirA" points="[15, 0, -156, 43]$[155, -40, -16, 3]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_X6XcMFBfEeeAb79RbYsirA" id="(0.75,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_X6XcMVBfEeeAb79RbYsirA" id="(0.4,0.425)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_ZxU90FBfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_ZxKlwFBfEeeAb79RbYsirA" target="_ZxUWx1BfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_ZxU90VBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ZxU91VBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions2.uml#_Zw1OkFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZxU90lBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZxU901BfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZxU91FBfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_atoOAFBfEeeAb79RbYsirA" type="Transition_Edge" source="_CMbJFlBfEeeAb79RbYsirA" target="_DkK_IFBfEeeAb79RbYsirA" routing="Rectilinear"> + <children xmi:type="notation:DecorationNode" xmi:id="_ato1EFBfEeeAb79RbYsirA" type="Transition_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PkeS0FBgEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ato1EVBfEeeAb79RbYsirA" x="-4" y="-13"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_ato1ElBfEeeAb79RbYsirA" type="Transition_GuardLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Pk37cFBgEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ato1E1BfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_ato1FFBfEeeAb79RbYsirA" type="Transition_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PlMrkFBgEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_ato1FVBfEeeAb79RbYsirA" x="1" y="59"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_atoOAVBfEeeAb79RbYsirA"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions2.uml#_atTd4FBfEeeAb79RbYsirA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_atoOAlBfEeeAb79RbYsirA" points="[220, 200, -643984, -643984]$[360, 200, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aufJoFBfEeeAb79RbYsirA" id="(1.0,0.5573770491803278)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aufJoVBfEeeAb79RbYsirA" id="(0.375,0.525)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_bq9Y91BfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_bm28EFBfEeeAb79RbYsirA" target="_bq9Y81BfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_bq9Y-FBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_bq-AAVBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bmw1cFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bq9Y-VBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bq9Y-lBfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bq-AAFBfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_brDfl1BfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_bm7NgFBfEeeAb79RbYsirA" target="_brDfk1BfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_brDfmFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_brDfnFBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bm4xQFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_brDfmVBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_brDfmlBfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_brDfm1BfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_brKNRFBfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_bm-34FBfEeeAb79RbYsirA" target="_brKNQFBfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_brKNRVBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_brKNSVBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bm8boFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_brKNRlBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_brKNR1BfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_brKNSFBfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_19HeIFBfEeeAb79RbYsirA" type="Transition_Edge" source="_19cOQFBfEeeAb79RbYsirA" target="_ZxKlwFBfEeeAb79RbYsirA"> + <children xmi:type="notation:DecorationNode" xmi:id="_19HeI1BfEeeAb79RbYsirA" type="Transition_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_2ay4oFBfEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_19HeJFBfEeeAb79RbYsirA" x="5" y="-7"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_19HeJVBfEeeAb79RbYsirA" type="Transition_GuardLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_2bJd8FBfEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_19HeJlBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_19HeJ1BfEeeAb79RbYsirA" type="Transition_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_2bjtoFBfEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_19HeKFBfEeeAb79RbYsirA" y="59"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_19HeIVBfEeeAb79RbYsirA"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions2.uml#_18fMAFBfEeeAb79RbYsirA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_19HeIlBfEeeAb79RbYsirA" points="[-13, 4, -196, -68]$[167, 74, -16, 2]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1_NI0FBfEeeAb79RbYsirA" id="(0.65,0.675)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1_NI0VBfEeeAb79RbYsirA" id="(0.4,0.45)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_196vZ1BfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_19cOQFBfEeeAb79RbYsirA" target="_196vY1BfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_196vaFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_196vbFBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_18bhoFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_196vaVBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_196valBfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_196va1BfEeeAb79RbYsirA"/> + </edges> + </notation:Diagram> + <notation:Diagram xmi:id="_bmo5oFBfEeeAb79RbYsirA" type="PapyrusUMLStateMachineDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_bmo5oVBfEeeAb79RbYsirA" type="State_Shape_TN"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2BavUFBfEeeAb79RbYsirA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2BavUVBfEeeAb79RbYsirA" key="mutable" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_bmo5olBfEeeAb79RbYsirA" type="State_NameLabel_TN"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bmo5o1BfEeeAb79RbYsirA" width="700" height="16"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_bmo5pFBfEeeAb79RbYsirA" type="State_RegionCompartment_TN"> + <children xmi:type="notation:Shape" xmi:id="_bmo5pVBfEeeAb79RbYsirA" type="Region_Shape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bmo5plBfEeeAb79RbYsirA" source="RegionAnnotationKey"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bmo5p1BfEeeAb79RbYsirA" key="RegionZoneKey" value=""/> + </eAnnotations> + <children xmi:type="notation:BasicCompartment" xmi:id="_bmo5qFBfEeeAb79RbYsirA" type="Region_SubvertexCompartment"> + <children xmi:type="notation:Shape" xmi:id="_dVLfEFBfEeeAb79RbYsirA" type="State_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_dVMGIFBfEeeAb79RbYsirA" type="State_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_dVMGIVBfEeeAb79RbYsirA" type="State_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_dVMGIlBfEeeAb79RbYsirA" x="40"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_dVMGI1BfEeeAb79RbYsirA" type="State_RegionCompartment"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dVMGJFBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="_dVMGJVBfEeeAb79RbYsirA" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dVMGJlBfEeeAb79RbYsirA"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions2.uml#_dVBHAFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dVLfEVBfEeeAb79RbYsirA" x="329" y="114"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_dVWeMFBfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_dVWeMVBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_dVWeM1BfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions2.uml#_dVBHAFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dVWeMlBfEeeAb79RbYsirA" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_gO6FQFBfEeeAb79RbYsirA" type="State_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_gO6FQlBfEeeAb79RbYsirA" type="State_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_gO6FQ1BfEeeAb79RbYsirA" type="State_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_gO6FRFBfEeeAb79RbYsirA" x="40"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_gO6FRVBfEeeAb79RbYsirA" type="State_RegionCompartment"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gO6FRlBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="_gO6FR1BfEeeAb79RbYsirA" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gO6FSFBfEeeAb79RbYsirA"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions2.uml#_gOqNoFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gO6FQVBfEeeAb79RbYsirA" x="449" y="54"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_gPEdU1BfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_gPEdVFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_gPFEYFBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions2.uml#_gOqNoFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gPEdVVBfEeeAb79RbYsirA" x="200"/> + </children> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bmo5qVBfEeeAb79RbYsirA"/> + </children> + <element xmi:type="uml:Region" href="AmbiguousTransitions2.uml#_bmnrgFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bmo5qlBfEeeAb79RbYsirA" width="700" height="280"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_bpCtY1BfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_bpCtZFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_bpCtZlBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Region" href="AmbiguousTransitions2.uml#_bmnrgFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bpCtZVBfEeeAb79RbYsirA" x="200"/> + </children> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bmo5q1BfEeeAb79RbYsirA" y="16" width="700" height="280"/> + </children> + <children xmi:type="notation:Compartment" xmi:id="_bmo5rFBfEeeAb79RbYsirA" type="InternalTransitions"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bmo5rVBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_bnDJUFBfEeeAb79RbYsirA" type="Pseudostate_EntryPointShape"> + <children xmi:type="notation:DecorationNode" xmi:id="_bnDwYFBfEeeAb79RbYsirA" type="Pseudostate_EntryPointFloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_bnDwYVBfEeeAb79RbYsirA" x="25" y="3"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_bnDwYlBfEeeAb79RbYsirA" type="Pseudostate_EntryPointStereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_bnDwY1BfEeeAb79RbYsirA" x="25" y="-10"/> + </children> + <element xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bmw1cFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bnDJUVBfEeeAb79RbYsirA" x="259" y="-5"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_bnDwZFBfEeeAb79RbYsirA" type="Pseudostate_ExitPointShape"> + <children xmi:type="notation:DecorationNode" xmi:id="_bnDwZlBfEeeAb79RbYsirA" type="Pseudostate_ExitPointFloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_bnDwZ1BfEeeAb79RbYsirA" x="25" y="3"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_bnDwaFBfEeeAb79RbYsirA" type="Pseudostate_ExitPointStereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_bnDwaVBfEeeAb79RbYsirA" x="25" y="-10"/> + </children> + <element xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bm4xQFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bnDwZVBfEeeAb79RbYsirA" x="695" y="62"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_bnEXcFBfEeeAb79RbYsirA" type="Pseudostate_ExitPointShape"> + <children xmi:type="notation:DecorationNode" xmi:id="_bnEXclBfEeeAb79RbYsirA" type="Pseudostate_ExitPointFloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_bnEXc1BfEeeAb79RbYsirA" x="25" y="3"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_bnEXdFBfEeeAb79RbYsirA" type="Pseudostate_ExitPointStereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_bnEXdVBfEeeAb79RbYsirA" x="25" y="-10"/> + </children> + <element xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bm8boFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bnEXcVBfEeeAb79RbYsirA" x="695" y="145"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_bo904FBfEeeAb79RbYsirA" type="StereotypeLabel"> + <styles xmi:type="notation:StringValueStyle" xmi:id="_bo904VBfEeeAb79RbYsirA" name="stereotype" stringValue="UMLRTStateMachines::RTState"/> + <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/UMLRealTimeSM-addendum.profile.uml#_KKLAAFDuEeOA4ecmvfqvaw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bo904lBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_bo-b8FBfEeeAb79RbYsirA" type="StereotypeBrace"> + <styles xmi:type="notation:TitleStyle" xmi:id="_bo-b8VBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_bo-b8lBfEeeAb79RbYsirA" name="stereotype" stringValue="UMLRTStateMachines::RTState"/> + <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/UMLRealTimeSM-addendum.profile.uml#_KKLAAFDuEeOA4ecmvfqvaw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bo-b81BfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_bo-b9FBfEeeAb79RbYsirA" type="compartment_shape_display"> + <styles xmi:type="notation:TitleStyle" xmi:id="_bo-b9VBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bo-b9lBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_bo_DBFBfEeeAb79RbYsirA" type="StereotypeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_bo_DBVBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_bo_DBlBfEeeAb79RbYsirA" name="stereotype" stringValue="UMLRTStateMachines::RTState"/> + <element xmi:type="uml:Stereotype" href="pathmap://UML_RT_PROFILE/UMLRealTimeSM-addendum.profile.uml#_KKLAAFDuEeOA4ecmvfqvaw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bo_DB1BfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_19hGwFBfEeeAb79RbYsirA" type="Pseudostate_ExitPointShape"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2BavUlBfEeeAb79RbYsirA" source="PapyrusCSSForceValue"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2BavU1BfEeeAb79RbYsirA" key="mutable" value="true"/> + </eAnnotations> + <children xmi:type="notation:DecorationNode" xmi:id="_19hGwlBfEeeAb79RbYsirA" type="Pseudostate_ExitPointFloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_19hGw1BfEeeAb79RbYsirA" x="25" y="3"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_19hGxFBfEeeAb79RbYsirA" type="Pseudostate_ExitPointStereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_19hGxVBfEeeAb79RbYsirA" x="25" y="-10"/> + </children> + <element xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_18bhoFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_19hGwVBfEeeAb79RbYsirA" x="695" y="242" width="10" height="10"/> + </children> + <element xmi:type="uml:State" href="AmbiguousTransitions2.uml#_BlgTAFBfEeeAb79RbYsirA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bmo5rlBfEeeAb79RbYsirA" x="30" y="30" width="700" height="296"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_bo-b91BfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_bo-b-FBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_bo-b-lBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions2.uml#_BlgTAFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bo-b-VBfEeeAb79RbYsirA" x="230" y="30"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_bpKpM1BfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_bpKpNFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_bpKpNlBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bmw1cFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bpKpNVBfEeeAb79RbYsirA" x="461" y="-5"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_bpNFd1BfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_bpNFeFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_bpNsgFBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bm4xQFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bpNFeVBfEeeAb79RbYsirA" x="895" y="109"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_bpQv01BfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_bpQv1FBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_bpQv1lBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bm8boFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bpQv1VBfEeeAb79RbYsirA" x="895" y="184"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_19nNZ1BfEeeAb79RbYsirA" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_19nNaFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_19nNalBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_18bhoFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_19nNaVBfEeeAb79RbYsirA" x="195" y="291"/> + </children> + <styles xmi:type="notation:StringValueStyle" xmi:id="_bmo5r1BfEeeAb79RbYsirA" name="diagram_compatibility_version" stringValue="1.3.0"/> + <styles xmi:type="notation:DiagramStyle" xmi:id="_bmo5sFBfEeeAb79RbYsirA"/> + <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_bmo5sVBfEeeAb79RbYsirA" diagramKindId="org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine.UMLRTStateMachine"> + <owner xmi:type="uml:State" href="AmbiguousTransitions2.uml#_BlgTAFBfEeeAb79RbYsirA"/> + </styles> + <element xmi:type="uml:State" href="AmbiguousTransitions2.uml#_BlgTAFBfEeeAb79RbYsirA"/> + <edges xmi:type="notation:Connector" xmi:id="_bo-b-1BfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_bmo5oVBfEeeAb79RbYsirA" target="_bo-b91BfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_bo-b_FBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_bo-cAFBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions2.uml#_BlgTAFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bo-b_VBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bo-b_lBfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bo-b_1BfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_bpCtZ1BfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_bmo5pVBfEeeAb79RbYsirA" target="_bpCtY1BfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_bpCtaFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_bpCtbFBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Region" href="AmbiguousTransitions2.uml#_bmnrgFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bpCtaVBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bpCtalBfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bpCta1BfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_bpKpN1BfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_bnDJUFBfEeeAb79RbYsirA" target="_bpKpM1BfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_bpKpOFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_bpLQQFBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bmw1cFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bpKpOVBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bpKpOlBfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bpKpO1BfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_bpNsgVBfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_bnDwZFBfEeeAb79RbYsirA" target="_bpNFd1BfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_bpNsglBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_bpNshlBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bm4xQFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bpNsg1BfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bpNshFBfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bpNshVBfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_bpQv11BfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_bnEXcFBfEeeAb79RbYsirA" target="_bpQv01BfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_bpQv2FBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_bpRW4lBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_bm8boFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bpQv2VBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bpRW4FBfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bpRW4VBfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_dVWeNFBfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_dVLfEFBfEeeAb79RbYsirA" target="_dVWeMFBfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_dVWeNVBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_dVWeOVBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions2.uml#_dVBHAFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dVWeNlBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dVWeN1BfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dVWeOFBfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_fCA0UFBfEeeAb79RbYsirA" type="Transition_Edge" source="_bnDJUFBfEeeAb79RbYsirA" target="_dVLfEFBfEeeAb79RbYsirA" routing="Rectilinear"> + <children xmi:type="notation:DecorationNode" xmi:id="_fCA0U1BfEeeAb79RbYsirA" type="Transition_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_fkKfIFBfEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_fCA0VFBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_fCA0VVBfEeeAb79RbYsirA" type="Transition_GuardLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_fkWsYFBfEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_fCA0VlBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_fCA0V1BfEeeAb79RbYsirA" type="Transition_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_fkf2UFBfEeeAb79RbYsirA" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_fCA0WFBfEeeAb79RbYsirA" x="-1" y="58"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_fCA0UVBfEeeAb79RbYsirA"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions2.uml#_fB0nEFBfEeeAb79RbYsirA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fCA0UlBfEeeAb79RbYsirA" points="[294, 35, -643984, -643984]$[294, 180, -643984, -643984]$[360, 180, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1LirsFBpEeevEbN5fxKHMg" id="(0.5,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fChKoFBfEeeAb79RbYsirA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_gPFEYVBfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_gO6FQFBfEeeAb79RbYsirA" target="_gPEdU1BfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_gPFEYlBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_gPFEZlBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:State" href="AmbiguousTransitions2.uml#_gOqNoFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gPFEY1BfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gPFEZFBfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gPFEZVBfEeeAb79RbYsirA"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_hguScFBfEeeAb79RbYsirA" type="Transition_Edge" source="_dVLfEFBfEeeAb79RbYsirA" target="_gO6FQFBfEeeAb79RbYsirA"> + <children xmi:type="notation:DecorationNode" xmi:id="_hguSc1BfEeeAb79RbYsirA" type="Transition_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zHskoFBpEeevEbN5fxKHMg" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_hguSdFBfEeeAb79RbYsirA" x="-6" y="-20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_hgu5gFBfEeeAb79RbYsirA" type="Transition_GuardLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zIP-QFBpEeevEbN5fxKHMg" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_hgu5gVBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_hgu5glBfEeeAb79RbYsirA" type="Transition_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zIw7oFBpEeevEbN5fxKHMg" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_hgu5g1BfEeeAb79RbYsirA" x="-1" y="59"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_hguScVBfEeeAb79RbYsirA"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions2.uml#_hggQAFBfEeeAb79RbYsirA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hguSclBfEeeAb79RbYsirA" points="[-4, -6, -197, 38]$[176, -46, -17, -2]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hhUvYFBfEeeAb79RbYsirA" id="(1.0,0.25)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hhUvYVBfEeeAb79RbYsirA" id="(0.425,0.55)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_jDjXIFBfEeeAb79RbYsirA" type="Transition_Edge" source="_dVLfEFBfEeeAb79RbYsirA" target="_bnEXcFBfEeeAb79RbYsirA" routing="Rectilinear"> + <children xmi:type="notation:DecorationNode" xmi:id="_jDjXI1BfEeeAb79RbYsirA" type="Transition_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_wAm34FBpEeevEbN5fxKHMg" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_jDj-MFBfEeeAb79RbYsirA" x="3" y="-16"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_jDj-MVBfEeeAb79RbYsirA" type="Transition_GuardLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_wBGnIFBpEeevEbN5fxKHMg" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_jDj-MlBfEeeAb79RbYsirA"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_jDj-M1BfEeeAb79RbYsirA" type="Transition_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_wBlvUFBpEeevEbN5fxKHMg" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_jDj-NFBfEeeAb79RbYsirA" x="1" y="59"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_jDjXIVBfEeeAb79RbYsirA"/> + <element xmi:type="uml:Transition" href="AmbiguousTransitions2.uml#_jCEJYFBfEeeAb79RbYsirA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jDjXIlBfEeeAb79RbYsirA" points="[400, 180, -643984, -643984]$[700, 180, -643984, -643984]$[700, 177, -643984, -643984]$[726, 177, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jEP6sFBfEeeAb79RbYsirA" id="(1.0,0.5)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_19nNa1BfEeeAb79RbYsirA" type="StereotypeCommentLink" source="_19hGwFBfEeeAb79RbYsirA" target="_19nNZ1BfEeeAb79RbYsirA"> + <styles xmi:type="notation:FontStyle" xmi:id="_19nNbFBfEeeAb79RbYsirA"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_19n0clBfEeeAb79RbYsirA" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Pseudostate" href="AmbiguousTransitions2.uml#_18bhoFBfEeeAb79RbYsirA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_19nNbVBfEeeAb79RbYsirA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_19n0cFBfEeeAb79RbYsirA"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_19n0cVBfEeeAb79RbYsirA"/> + </edges> + </notation:Diagram> +</xmi:XMI> diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions2/AmbiguousTransitions2.uml b/models/tests/codepattern/statemachines/AmbiguousTransitions2/AmbiguousTransitions2.uml new file mode 100644 index 000000000..50e6fa612 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/AmbiguousTransitions2.uml @@ -0,0 +1,126 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:UMLRTStateMachines="http://www.eclipse.org/papyrus/umlrt/statemachine" 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="_60CmQFBeEeeAb79RbYsirA" name="AmbiguousTransitions2"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_60CmQVBeEeeAb79RbYsirA" source="http://www.eclipse.org/papyrus-rt/language/1.0.0"> + <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_60CmQlBeEeeAb79RbYsirA" key="language" value="umlrt-cpp"/> + </eAnnotations> + <packagedElement xmi:type="uml:Class" xmi:id="_9LLcwFBeEeeAb79RbYsirA" name="Top" classifierBehavior="_BlUs0FBfEeeAb79RbYsirA" isActive="true"> + <ownedAttribute xmi:type="uml:Port" xmi:id="_-zKuQFBeEeeAb79RbYsirA" name="protocol1" visibility="public" type="__EqG4FBeEeeAb79RbYsirA" isOrdered="true" aggregation="composite" isBehavior="true" isService="true"/> + <ownedAttribute xmi:type="uml:Port" xmi:id="_AS9tEFBfEeeAb79RbYsirA" name="protocol2" visibility="public" type="_Ai5mgFBfEeeAb79RbYsirA" isOrdered="true" aggregation="composite" isBehavior="true" isService="true"/> + <ownedBehavior xmi:type="uml:StateMachine" xmi:id="_BlUs0FBfEeeAb79RbYsirA" name="StateMachine" isReentrant="false"> + <region xmi:type="uml:Region" xmi:id="_BlaMYFBfEeeAb79RbYsirA" name="Region"> + <transition xmi:type="uml:Transition" xmi:id="_BljWUFBfEeeAb79RbYsirA" name="Initial" source="_BlcooFBfEeeAb79RbYsirA" target="_bmw1cFBfEeeAb79RbYsirA"/> + <transition xmi:type="uml:Transition" xmi:id="_X5Zy4FBfEeeAb79RbYsirA" kind="external" source="_bm4xQFBfEeeAb79RbYsirA" target="_DKWw8FBfEeeAb79RbYsirA"> + <trigger xmi:type="uml:Trigger" xmi:id="_wz3sYFBfEeeAb79RbYsirA" event="_qYJmIFBfEeeAb79RbYsirA" port="_-zKuQFBeEeeAb79RbYsirA"/> + </transition> + <transition xmi:type="uml:Transition" xmi:id="_atTd4FBfEeeAb79RbYsirA" name="" kind="external" source="_BlgTAFBfEeeAb79RbYsirA" target="_Dj7ukFBfEeeAb79RbYsirA"> + <trigger xmi:type="uml:Trigger" xmi:id="_y5U9AFBfEeeAb79RbYsirA" event="_ulNccFBfEeeAb79RbYsirA" port="_AS9tEFBfEeeAb79RbYsirA"/> + </transition> + <transition xmi:type="uml:Transition" xmi:id="_18fMAFBfEeeAb79RbYsirA" name="" kind="external" source="_18bhoFBfEeeAb79RbYsirA" target="_Zw1OkFBfEeeAb79RbYsirA"> + <trigger xmi:type="uml:Trigger" xmi:id="_28xkUFBfEeeAb79RbYsirA" event="_spOQ4FBfEeeAb79RbYsirA" port="_AS9tEFBfEeeAb79RbYsirA"/> + </transition> + <subvertex xmi:type="uml:Pseudostate" xmi:id="_BlcooFBfEeeAb79RbYsirA" kind="initial"/> + <subvertex xmi:type="uml:State" xmi:id="_BlgTAFBfEeeAb79RbYsirA" name="State1"> + <connectionPoint xmi:type="uml:Pseudostate" xmi:id="_bmw1cFBfEeeAb79RbYsirA" kind="entryPoint"/> + <connectionPoint xmi:type="uml:Pseudostate" xmi:id="_bm4xQFBfEeeAb79RbYsirA" kind="exitPoint"/> + <connectionPoint xmi:type="uml:Pseudostate" xmi:id="_bm8boFBfEeeAb79RbYsirA" kind="exitPoint"/> + <connectionPoint xmi:type="uml:Pseudostate" xmi:id="_18bhoFBfEeeAb79RbYsirA" kind="exitPoint"/> + <region xmi:type="uml:Region" xmi:id="_bmnrgFBfEeeAb79RbYsirA" name="Region1"> + <transition xmi:type="uml:Transition" xmi:id="_fB0nEFBfEeeAb79RbYsirA" kind="local" source="_bmw1cFBfEeeAb79RbYsirA" target="_dVBHAFBfEeeAb79RbYsirA"/> + <transition xmi:type="uml:Transition" xmi:id="_hggQAFBfEeeAb79RbYsirA" name="" kind="external" source="_dVBHAFBfEeeAb79RbYsirA" target="_gOqNoFBfEeeAb79RbYsirA"> + <trigger xmi:type="uml:Trigger" xmi:id="_7jLuwFBfEeeAb79RbYsirA" event="_qYJmIFBfEeeAb79RbYsirA" port="_-zKuQFBeEeeAb79RbYsirA"/> + </transition> + <transition xmi:type="uml:Transition" xmi:id="_jCEJYFBfEeeAb79RbYsirA" name="" kind="external" source="_dVBHAFBfEeeAb79RbYsirA" target="_bm8boFBfEeeAb79RbYsirA"> + <trigger xmi:type="uml:Trigger" xmi:id="__G4fAFBfEeeAb79RbYsirA" event="_rdgEoFBfEeeAb79RbYsirA" port="_-zKuQFBeEeeAb79RbYsirA"/> + </transition> + <subvertex xmi:type="uml:State" xmi:id="_dVBHAFBfEeeAb79RbYsirA" name="State1"/> + <subvertex xmi:type="uml:State" xmi:id="_gOqNoFBfEeeAb79RbYsirA" name="State2"/> + </region> + </subvertex> + <subvertex xmi:type="uml:State" xmi:id="_DKWw8FBfEeeAb79RbYsirA" name="State2"/> + <subvertex xmi:type="uml:State" xmi:id="_Dj7ukFBfEeeAb79RbYsirA" name="State3"/> + <subvertex xmi:type="uml:State" xmi:id="_Zw1OkFBfEeeAb79RbYsirA" name="State4"/> + </region> + </ownedBehavior> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="__EsjIFBeEeeAb79RbYsirA" name="Protocol1"> + <packagedElement xmi:type="uml:Collaboration" xmi:id="__EqG4FBeEeeAb79RbYsirA" name="Protocol1"> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="__Ez34FBeEeeAb79RbYsirA" client="__EqG4FBeEeeAb79RbYsirA" supplier="__Ew0kFBeEeeAb79RbYsirA" contract="__Ew0kFBeEeeAb79RbYsirA"/> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="__E8awFBeEeeAb79RbYsirA" client="__EqG4FBeEeeAb79RbYsirA" supplier="__E4wYVBeEeeAb79RbYsirA" contract="__E4wYVBeEeeAb79RbYsirA"/> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="__Ew0kFBeEeeAb79RbYsirA" name="Protocol1"> + <ownedOperation xmi:type="uml:Operation" xmi:id="_qYEGkFBfEeeAb79RbYsirA" name="m1"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_rdalEFBfEeeAb79RbYsirA" name="m2"/> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="__E1GAFBeEeeAb79RbYsirA" name="Protocol1~"/> + <packagedElement xmi:type="uml:Usage" xmi:id="__E4JUFBeEeeAb79RbYsirA" client="__EqG4FBeEeeAb79RbYsirA" supplier="__E1GAFBeEeeAb79RbYsirA"/> + <packagedElement xmi:type="uml:AnyReceiveEvent" xmi:id="__E4wYFBeEeeAb79RbYsirA" name="*"/> + <packagedElement xmi:type="uml:Interface" xmi:id="__E4wYVBeEeeAb79RbYsirA" name="Protocol1IO"/> + <packagedElement xmi:type="uml:Usage" xmi:id="__E9B0FBeEeeAb79RbYsirA" client="__EqG4FBeEeeAb79RbYsirA" supplier="__E4wYVBeEeeAb79RbYsirA"/> + <packagedElement xmi:type="uml:CallEvent" xmi:id="_qYJmIFBfEeeAb79RbYsirA" operation="_qYEGkFBfEeeAb79RbYsirA"/> + <packagedElement xmi:type="uml:CallEvent" xmi:id="_rdgEoFBfEeeAb79RbYsirA" operation="_rdalEFBfEeeAb79RbYsirA"/> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_Ai8CwFBfEeeAb79RbYsirA" name="Protocol2"> + <packagedElement xmi:type="uml:Collaboration" xmi:id="_Ai5mgFBfEeeAb79RbYsirA" name="Protocol2"> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_AjBiUFBfEeeAb79RbYsirA" client="_Ai5mgFBfEeeAb79RbYsirA" supplier="_Ai-fAFBfEeeAb79RbYsirA" contract="_Ai-fAFBfEeeAb79RbYsirA"/> + <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_AjHo8FBfEeeAb79RbYsirA" client="_Ai5mgFBfEeeAb79RbYsirA" supplier="_AjFMsVBfEeeAb79RbYsirA" contract="_AjFMsVBfEeeAb79RbYsirA"/> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="_Ai-fAFBfEeeAb79RbYsirA" name="Protocol2"> + <ownedOperation xmi:type="uml:Operation" xmi:id="_spIKQFBfEeeAb79RbYsirA" name="m1"/> + <ownedOperation xmi:type="uml:Operation" xmi:id="_ulH84FBfEeeAb79RbYsirA" name="m2"/> + </packagedElement> + <packagedElement xmi:type="uml:Interface" xmi:id="_AjCJYFBfEeeAb79RbYsirA" name="Protocol2~"/> + <packagedElement xmi:type="uml:Usage" xmi:id="_AjEloFBfEeeAb79RbYsirA" client="_Ai5mgFBfEeeAb79RbYsirA" supplier="_AjCJYFBfEeeAb79RbYsirA"/> + <packagedElement xmi:type="uml:AnyReceiveEvent" xmi:id="_AjFMsFBfEeeAb79RbYsirA" name="*"/> + <packagedElement xmi:type="uml:Interface" xmi:id="_AjFMsVBfEeeAb79RbYsirA" name="Protocol2IO"/> + <packagedElement xmi:type="uml:Usage" xmi:id="_AjHo8VBfEeeAb79RbYsirA" client="_Ai5mgFBfEeeAb79RbYsirA" supplier="_AjFMsVBfEeeAb79RbYsirA"/> + <packagedElement xmi:type="uml:CallEvent" xmi:id="_spOQ4FBfEeeAb79RbYsirA" operation="_spIKQFBfEeeAb79RbYsirA"/> + <packagedElement xmi:type="uml:CallEvent" xmi:id="_ulNccFBfEeeAb79RbYsirA" operation="_ulH84FBfEeeAb79RbYsirA"/> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_60CmQ1BeEeeAb79RbYsirA"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_60CmRFBeEeeAb79RbYsirA" 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> + <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_60CmRVBeEeeAb79RbYsirA"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_60CmRlBeEeeAb79RbYsirA" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/umlrt/statemachine#/"/> + </eAnnotations> + <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_RT_PROFILE/UMLRealTimeSM-addendum.profile.uml#_KLcn0FDtEeOA4ecmvfqvaw"/> + </profileApplication> + <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_60CmR1BeEeeAb79RbYsirA"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_60CmSFBeEeeAb79RbYsirA" source="http://www.eclipse.org/uml2/2.0.0/UML"> + <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/umlrt/cppproperties#/"/> + </eAnnotations> + <appliedProfile xmi:type="uml:Profile" href="pathmap://UMLRT_CPP/RTCppProperties.profile.uml#_vl5LALs8EeSTjNEQkASznQ"/> + </profileApplication> + </uml:Model> + <UMLRealTime:Capsule xmi:id="_9OCjgFBeEeeAb79RbYsirA" base_Class="_9LLcwFBeEeeAb79RbYsirA"/> + <UMLRealTime:RTPort xmi:id="_-zOYoFBeEeeAb79RbYsirA" isPublish="false" isWired="true" base_Port="_-zKuQFBeEeeAb79RbYsirA"/> + <UMLRealTime:ProtocolContainer xmi:id="__EvmcFBeEeeAb79RbYsirA" base_Package="__EsjIFBeEeeAb79RbYsirA"/> + <UMLRealTime:RTMessageSet xmi:id="__EzQ0FBeEeeAb79RbYsirA" base_Interface="__Ew0kFBeEeeAb79RbYsirA"/> + <UMLRealTime:RTMessageSet xmi:id="__E27MFBeEeeAb79RbYsirA" base_Interface="__E1GAFBeEeeAb79RbYsirA" rtMsgKind="out"/> + <UMLRealTime:RTMessageSet xmi:id="__E7MoFBeEeeAb79RbYsirA" base_Interface="__E4wYVBeEeeAb79RbYsirA" rtMsgKind="inOut"/> + <UMLRealTime:Protocol xmi:id="__E9o4FBeEeeAb79RbYsirA" base_Collaboration="__EqG4FBeEeeAb79RbYsirA"/> + <UMLRealTime:RTPort xmi:id="_ATBXcFBfEeeAb79RbYsirA" isPublish="false" isWired="true" base_Port="_AS9tEFBfEeeAb79RbYsirA"/> + <UMLRealTime:ProtocolContainer xmi:id="_Ai938FBfEeeAb79RbYsirA" base_Package="_Ai8CwFBfEeeAb79RbYsirA"/> + <UMLRealTime:RTMessageSet xmi:id="_AjA7QFBfEeeAb79RbYsirA" base_Interface="_Ai-fAFBfEeeAb79RbYsirA"/> + <UMLRealTime:RTMessageSet xmi:id="_AjD-kFBfEeeAb79RbYsirA" base_Interface="_AjCJYFBfEeeAb79RbYsirA" rtMsgKind="out"/> + <UMLRealTime:RTMessageSet xmi:id="_AjGa0FBfEeeAb79RbYsirA" base_Interface="_AjFMsVBfEeeAb79RbYsirA" rtMsgKind="inOut"/> + <UMLRealTime:Protocol xmi:id="_AjIQAFBfEeeAb79RbYsirA" base_Collaboration="_Ai5mgFBfEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTPseudostate xmi:id="_Bled0FBfEeeAb79RbYsirA" base_Pseudostate="_BlcooFBfEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTState xmi:id="_BliIMFBfEeeAb79RbYsirA" base_State="_BlgTAFBfEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTRegion xmi:id="_Blj9YFBfEeeAb79RbYsirA" base_Region="_BlaMYFBfEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTStateMachine xmi:id="_BlnnwFBfEeeAb79RbYsirA" base_StateMachine="_BlUs0FBfEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTState xmi:id="_DKZNMFBfEeeAb79RbYsirA" base_State="_DKWw8FBfEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTState xmi:id="_Dj9jwFBfEeeAb79RbYsirA" base_State="_Dj7ukFBfEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTState xmi:id="_Zw3q0FBfEeeAb79RbYsirA" base_State="_Zw1OkFBfEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTRegion xmi:id="_bmskAFBfEeeAb79RbYsirA" base_Region="_bmnrgFBfEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTPseudostate xmi:id="_bmyqoFBfEeeAb79RbYsirA" base_Pseudostate="_bmw1cFBfEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTPseudostate xmi:id="_bm6mcFBfEeeAb79RbYsirA" base_Pseudostate="_bm4xQFBfEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTPseudostate xmi:id="_bm-Q0FBfEeeAb79RbYsirA" base_Pseudostate="_bm8boFBfEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTState xmi:id="_dVC8MFBfEeeAb79RbYsirA" base_State="_dVBHAFBfEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTState xmi:id="_gOsC0FBfEeeAb79RbYsirA" base_State="_gOqNoFBfEeeAb79RbYsirA"/> + <UMLRTStateMachines:RTPseudostate xmi:id="_18d94FBfEeeAb79RbYsirA" base_Pseudostate="_18bhoFBfEeeAb79RbYsirA"/> +</xmi:XMI> diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/CMakeLists.txt b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/CMakeLists.txt new file mode 100644 index 000000000..86087be59 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/CMakeLists.txt @@ -0,0 +1,36 @@ +# Generated 2017-06-13 15:16:02 + +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 Top.cc TopControllers.cc Protocol2.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/statemachines/AmbiguousTransitions2/expected_src/Makefile b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Makefile new file mode 100644 index 000000000..0bcbd2251 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/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/statemachines/AmbiguousTransitions2/expected_src/MakefileTop.mk b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/MakefileTop.mk new file mode 100644 index 000000000..6d30fd436 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/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 Top.cc TopControllers.cc Protocol2.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/statemachines/AmbiguousTransitions2/expected_src/Protocol1.cc b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Protocol1.cc new file mode 100644 index 000000000..e5ff89666 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Protocol1.cc @@ -0,0 +1,82 @@ + +#include "Protocol1.hh" + +#include "umlrtobjectclass.hh" +#include "umlrtoutsignal.hh" +struct UMLRTCommsPort; + +static UMLRTObject_field fields_m1[] = +{ + #ifdef NEED_NON_FLEXIBLE_ARRAY + { + 0, + 0, + 0, + 0, + 0 + } + #endif +}; + +static UMLRTObject payload_m1 = +{ + 0, + #ifdef NEED_NON_FLEXIBLE_ARRAY + 1 + #else + 0 + #endif + , + fields_m1 +}; + +static UMLRTObject_field fields_m2[] = +{ + #ifdef NEED_NON_FLEXIBLE_ARRAY + { + 0, + 0, + 0, + 0, + 0 + } + #endif +}; + +static UMLRTObject payload_m2 = +{ + 0, + #ifdef NEED_NON_FLEXIBLE_ARRAY + 1 + #else + 0 + #endif + , + fields_m2 +}; + +Protocol1::Base::Base( const UMLRTCommsPort * & srcPort ) +: UMLRTProtocol( srcPort ) +{ +} + +Protocol1::Conj::Conj( const UMLRTCommsPort * & srcPort ) +: UMLRTProtocol( srcPort ) +{ +} + +UMLRTOutSignal Protocol1::Conj::m1() const +{ + UMLRTOutSignal signal; + signal.initialize( "m1", signal_m1, srcPort, &payload_m1 ); + return signal; +} + +UMLRTOutSignal Protocol1::Conj::m2() const +{ + UMLRTOutSignal signal; + signal.initialize( "m2", signal_m2, srcPort, &payload_m2 ); + return signal; +} + + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Protocol1.hh b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Protocol1.hh new file mode 100644 index 000000000..5786c0dd6 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Protocol1.hh @@ -0,0 +1,32 @@ + +#ifndef PROTOCOL1_HH +#define PROTOCOL1_HH + +#include "umlrtoutsignal.hh" +#include "umlrtprotocol.hh" +#include "umlrtsignal.hh" +struct UMLRTCommsPort; + +namespace Protocol1 +{ + class Base : public UMLRTProtocol + { + public: + Base( const UMLRTCommsPort * & srcPort ); + }; + class Conj : public UMLRTProtocol + { + public: + Conj( const UMLRTCommsPort * & srcPort ); + UMLRTOutSignal m1() const; + UMLRTOutSignal m2() const; + }; + enum SignalId + { + signal_m1 = UMLRTSignal::FIRST_PROTOCOL_SIGNAL_ID, + signal_m2 + }; +}; + +#endif + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Protocol2.cc b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Protocol2.cc new file mode 100644 index 000000000..b493e5d3c --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Protocol2.cc @@ -0,0 +1,82 @@ + +#include "Protocol2.hh" + +#include "umlrtobjectclass.hh" +#include "umlrtoutsignal.hh" +struct UMLRTCommsPort; + +static UMLRTObject_field fields_m1[] = +{ + #ifdef NEED_NON_FLEXIBLE_ARRAY + { + 0, + 0, + 0, + 0, + 0 + } + #endif +}; + +static UMLRTObject payload_m1 = +{ + 0, + #ifdef NEED_NON_FLEXIBLE_ARRAY + 1 + #else + 0 + #endif + , + fields_m1 +}; + +static UMLRTObject_field fields_m2[] = +{ + #ifdef NEED_NON_FLEXIBLE_ARRAY + { + 0, + 0, + 0, + 0, + 0 + } + #endif +}; + +static UMLRTObject payload_m2 = +{ + 0, + #ifdef NEED_NON_FLEXIBLE_ARRAY + 1 + #else + 0 + #endif + , + fields_m2 +}; + +Protocol2::Base::Base( const UMLRTCommsPort * & srcPort ) +: UMLRTProtocol( srcPort ) +{ +} + +Protocol2::Conj::Conj( const UMLRTCommsPort * & srcPort ) +: UMLRTProtocol( srcPort ) +{ +} + +UMLRTOutSignal Protocol2::Conj::m1() const +{ + UMLRTOutSignal signal; + signal.initialize( "m1", signal_m1, srcPort, &payload_m1 ); + return signal; +} + +UMLRTOutSignal Protocol2::Conj::m2() const +{ + UMLRTOutSignal signal; + signal.initialize( "m2", signal_m2, srcPort, &payload_m2 ); + return signal; +} + + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Protocol2.hh b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Protocol2.hh new file mode 100644 index 000000000..fbe762141 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Protocol2.hh @@ -0,0 +1,32 @@ + +#ifndef PROTOCOL2_HH +#define PROTOCOL2_HH + +#include "umlrtoutsignal.hh" +#include "umlrtprotocol.hh" +#include "umlrtsignal.hh" +struct UMLRTCommsPort; + +namespace Protocol2 +{ + class Base : public UMLRTProtocol + { + public: + Base( const UMLRTCommsPort * & srcPort ); + }; + enum SignalId + { + signal_m1 = UMLRTSignal::FIRST_PROTOCOL_SIGNAL_ID, + signal_m2 + }; + class Conj : public UMLRTProtocol + { + public: + Conj( const UMLRTCommsPort * & srcPort ); + UMLRTOutSignal m1() const; + UMLRTOutSignal m2() const; + }; +}; + +#endif + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Top-connections.log b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Top-connections.log new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Top-connections.log diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Top.cc b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Top.cc new file mode 100644 index 000000000..6ee439180 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Top.cc @@ -0,0 +1,485 @@ + +#include "Top.hh" + +#include "Protocol1.hh" +#include "Protocol2.hh" +#include "umlrtcommsportrole.hh" +#include "umlrtmessage.hh" +#include "umlrtslot.hh" +#include <cstddef> +#include "umlrtcapsuleclass.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 ) +, protocol1( borderPorts[borderport_protocol1] ) +, protocol2( borderPorts[borderport_protocol2] ) +, currentState( SPECIAL_INTERNAL_STATE_UNVISITED ) +{ + stateNames[State1] = "State1"; + stateNames[State1__State1] = "State1__State1"; + stateNames[State1__State2] = "State1__State2"; + stateNames[State1__boundary] = "State1__boundary"; + stateNames[State2] = "State2"; + stateNames[State3] = "State3"; + stateNames[State4] = "State4"; + stateNames[SPECIAL_INTERNAL_STATE_TOP] = "<top>"; + stateNames[SPECIAL_INTERNAL_STATE_UNVISITED] = "<uninitialized>"; + int i = 0; + while( i < 1 ) + history[i++] = SPECIAL_INTERNAL_STATE_UNVISITED; +} + + + + + + +void Capsule_Top::bindPort( bool isBorder, int portId, int index ) +{ + if( isBorder ) + switch( portId ) + { + case borderport_protocol1: + UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_protocol1, index, true ); + break; + case borderport_protocol2: + UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_protocol2, index, true ); + break; + } +} + +void Capsule_Top::unbindPort( bool isBorder, int portId, int index ) +{ + if( isBorder ) + switch( portId ) + { + case borderport_protocol1: + UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_protocol1, index, false ); + UMLRTFrameService::disconnectPort( borderPorts[borderport_protocol1], index ); + break; + case borderport_protocol2: + UMLRTFrameService::sendBoundUnbound( borderPorts, borderport_protocol2, index, false ); + UMLRTFrameService::disconnectPort( borderPorts[borderport_protocol2], index ); + break; + } +} + +void Capsule_Top::inject( const UMLRTMessage & message ) +{ + msg = &message; + switch( currentState ) + { + case State2: + currentState = state_____State2( &message ); + break; + case State3: + currentState = state_____State3( &message ); + break; + case State4: + currentState = state_____State4( &message ); + break; + case State1__State1: + currentState = state_____State1__State1( &message ); + break; + case State1__State2: + currentState = state_____State1__State2( &message ); + break; + case State1__boundary: + currentState = state_____State1__boundary( &message ); + break; + default: + break; + } +} + +void Capsule_Top::initialize( const UMLRTMessage & message ) +{ + msg = &message; + actionchain_____Initial( &message ); + currentState = junction_____State1__connectionPoint0( &message ); +} + +const char * Capsule_Top::getCurrentStateString() const +{ + return stateNames[currentState]; +} + + + + + +void Capsule_Top::save_history( Capsule_Top::State compositeState, Capsule_Top::State subState ) +{ + history[compositeState] = subState; +} + +bool Capsule_Top::check_history( Capsule_Top::State compositeState, Capsule_Top::State subState ) +{ + return history[compositeState] == subState; +} + +void Capsule_Top::update_state( Capsule_Top::State newState ) +{ + currentState = newState; +} + +void Capsule_Top::actionchain_____Initial( const UMLRTMessage * msg ) +{ + update_state( State1 ); +} + +void Capsule_Top::actionchain_____State1__new_transition_1( const UMLRTMessage * msg ) +{ + update_state( State1__State1 ); +} + +void Capsule_Top::actionchain_____State1__new_transition_10( const UMLRTMessage * msg ) +{ + update_state( State1 ); + save_history( State1, State1__boundary ); +} + +void Capsule_Top::actionchain_____State1__new_transition_11( const UMLRTMessage * msg ) +{ + update_state( State1 ); + save_history( State1, State1__State1 ); +} + +void Capsule_Top::actionchain_____State1__new_transition_12( const UMLRTMessage * msg ) +{ + update_state( State1 ); + save_history( State1, State1__State2 ); +} + +void Capsule_Top::actionchain_____State1__new_transition_13( const UMLRTMessage * msg ) +{ + update_state( State1 ); + save_history( State1, State1__boundary ); +} + +void Capsule_Top::actionchain_____State1__new_transition_2( const UMLRTMessage * msg ) +{ + update_state( State1__State2 ); +} + +void Capsule_Top::actionchain_____State1__new_transition_3_to_unvisited_boundary( const UMLRTMessage * msg ) +{ + update_state( State1__boundary ); +} + +void Capsule_Top::actionchain_____State1__new_transition_4_to_visited_boundary( const UMLRTMessage * msg ) +{ + update_state( State1__boundary ); +} + +void Capsule_Top::actionchain_____State1__new_transition_5( const UMLRTMessage * msg ) +{ + update_state( State1 ); + save_history( State1, State1__State1 ); +} + +void Capsule_Top::actionchain_____State1__new_transition_6( const UMLRTMessage * msg ) +{ + update_state( State1 ); + save_history( State1, State1__State2 ); +} + +void Capsule_Top::actionchain_____State1__new_transition_7( const UMLRTMessage * msg ) +{ + update_state( State1 ); + save_history( State1, State1__boundary ); +} + +void Capsule_Top::actionchain_____State1__new_transition_8( const UMLRTMessage * msg ) +{ + update_state( State1 ); + save_history( State1, State1__State1 ); +} + +void Capsule_Top::actionchain_____State1__new_transition_9( const UMLRTMessage * msg ) +{ + update_state( State1 ); + save_history( State1, State1__State2 ); +} + +void Capsule_Top::actionchain_____State1__transition0( const UMLRTMessage * msg ) +{ + update_state( State1__State1 ); +} + +void Capsule_Top::actionchain_____State1__transition1( const UMLRTMessage * msg ) +{ + update_state( State1 ); + update_state( State1__State2 ); +} + +void Capsule_Top::actionchain_____State1__transition2( const UMLRTMessage * msg ) +{ + update_state( State1 ); +} + +void Capsule_Top::actionchain_____transition1( const UMLRTMessage * msg ) +{ + update_state( SPECIAL_INTERNAL_STATE_TOP ); + update_state( State2 ); +} + +void Capsule_Top::actionchain_____transition2( const UMLRTMessage * msg ) +{ + update_state( SPECIAL_INTERNAL_STATE_TOP ); + update_state( State3 ); +} + +void Capsule_Top::actionchain_____transition3( const UMLRTMessage * msg ) +{ + update_state( SPECIAL_INTERNAL_STATE_TOP ); + update_state( State4 ); +} + +Capsule_Top::State Capsule_Top::junction_____State1__connectionPoint0( const UMLRTMessage * msg ) +{ + actionchain_____State1__transition0( msg ); + return State1__State1; +} + +Capsule_Top::State Capsule_Top::junction_____State1__connectionPoint1( const UMLRTMessage * msg ) +{ + actionchain_____transition1( msg ); + return State2; +} + +Capsule_Top::State Capsule_Top::junction_____State1__connectionPoint3( const UMLRTMessage * msg ) +{ + actionchain_____transition3( msg ); + return State4; +} + +Capsule_Top::State Capsule_Top::junction_____State1__new_exitpoint_1( const UMLRTMessage * msg ) +{ + actionchain_____transition2( msg ); + return State3; +} + +Capsule_Top::State Capsule_Top::choice_____State1__deephistory( const UMLRTMessage * msg ) +{ + if( check_history( State1, State1__State1 ) ) + { + actionchain_____State1__new_transition_1( msg ); + return State1__State1; + } + else if( check_history( State1, State1__State2 ) ) + { + actionchain_____State1__new_transition_2( msg ); + return State1__State2; + } + else if( check_history( State1, SPECIAL_INTERNAL_STATE_UNVISITED ) ) + { + actionchain_____State1__new_transition_3_to_unvisited_boundary( msg ); + return State1__boundary; + } + else if( check_history( State1, State1__boundary ) ) + { + actionchain_____State1__new_transition_4_to_visited_boundary( msg ); + return State1__boundary; + } + return currentState; +} + +Capsule_Top::State Capsule_Top::state_____State1__State1( const UMLRTMessage * msg ) +{ + switch( msg->destPort->role()->id ) + { + case port_protocol1: + switch( msg->getSignalId() ) + { + case Protocol1::signal_m1: + actionchain_____State1__transition1( msg ); + return State1__State2; + case Protocol1::signal_m2: + actionchain_____State1__transition2( msg ); + return choice_____State1__deephistory( msg ); + default: + this->unexpectedMessage(); + break; + } + return currentState; + case port_protocol2: + switch( msg->getSignalId() ) + { + case Protocol2::signal_m1: + actionchain_____State1__new_transition_8( msg ); + return junction_____State1__connectionPoint3( msg ); + case Protocol2::signal_m2: + actionchain_____State1__new_transition_11( msg ); + return junction_____State1__new_exitpoint_1( msg ); + default: + this->unexpectedMessage(); + break; + } + return currentState; + default: + this->unexpectedMessage(); + break; + } + return currentState; +} + +Capsule_Top::State Capsule_Top::state_____State1__State2( const UMLRTMessage * msg ) +{ + switch( msg->destPort->role()->id ) + { + case port_protocol1: + switch( msg->getSignalId() ) + { + case Protocol1::signal_m1: + actionchain_____State1__new_transition_6( msg ); + return junction_____State1__connectionPoint1( msg ); + default: + this->unexpectedMessage(); + break; + } + return currentState; + case port_protocol2: + switch( msg->getSignalId() ) + { + case Protocol2::signal_m1: + actionchain_____State1__new_transition_9( msg ); + return junction_____State1__connectionPoint3( msg ); + case Protocol2::signal_m2: + actionchain_____State1__new_transition_12( msg ); + return junction_____State1__new_exitpoint_1( msg ); + default: + this->unexpectedMessage(); + break; + } + return currentState; + default: + this->unexpectedMessage(); + break; + } + return currentState; +} + +Capsule_Top::State Capsule_Top::state_____State1__boundary( const UMLRTMessage * msg ) +{ + switch( msg->destPort->role()->id ) + { + case port_protocol1: + switch( msg->getSignalId() ) + { + case Protocol1::signal_m1: + actionchain_____State1__new_transition_7( msg ); + return junction_____State1__connectionPoint1( msg ); + default: + this->unexpectedMessage(); + break; + } + return currentState; + case port_protocol2: + switch( msg->getSignalId() ) + { + case Protocol2::signal_m1: + actionchain_____State1__new_transition_10( msg ); + return junction_____State1__connectionPoint3( msg ); + case Protocol2::signal_m2: + actionchain_____State1__new_transition_13( msg ); + return junction_____State1__new_exitpoint_1( msg ); + default: + this->unexpectedMessage(); + break; + } + return currentState; + default: + this->unexpectedMessage(); + break; + } + return currentState; +} + +Capsule_Top::State Capsule_Top::state_____State2( const UMLRTMessage * msg ) +{ + switch( msg->destPort->role()->id ) + { + default: + this->unexpectedMessage(); + break; + } + return currentState; +} + +Capsule_Top::State Capsule_Top::state_____State3( const UMLRTMessage * msg ) +{ + switch( msg->destPort->role()->id ) + { + default: + this->unexpectedMessage(); + break; + } + return currentState; +} + +Capsule_Top::State Capsule_Top::state_____State4( const UMLRTMessage * msg ) +{ + switch( msg->destPort->role()->id ) + { + default: + this->unexpectedMessage(); + break; + } + return currentState; +} + + +static const UMLRTCommsPortRole portroles_border[] = +{ + { + Capsule_Top::port_protocol1, + "Protocol1", + "protocol1", + "", + 1, + true, + false, + false, + false, + false, + false, + true + }, + { + Capsule_Top::port_protocol2, + "Protocol2", + "protocol2", + "", + 1, + true, + false, + false, + false, + false, + false, + true + } +}; + +static void instantiate_Top( const UMLRTRtsInterface * rts, UMLRTSlot * slot, const UMLRTCommsPort * * borderPorts ) +{ + slot->capsule = new Capsule_Top( &Top, slot, borderPorts, NULL, false ); +} + +const UMLRTCapsuleClass Top = +{ + "Top", + NULL, + instantiate_Top, + 0, + NULL, + 2, + portroles_border, + 0, + NULL +}; + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Top.hh b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Top.hh new file mode 100644 index 000000000..f47468a63 --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/Top.hh @@ -0,0 +1,95 @@ + +#ifndef TOP_HH +#define TOP_HH + +#include "Protocol1.hh" +#include "Protocol2.hh" +#include "umlrtcapsule.hh" +#include "umlrtcapsuleclass.hh" +#include "umlrtmessage.hh" +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 ); +protected: + Protocol1::Base protocol1; +public: + enum BorderPortId + { + borderport_protocol1, + borderport_protocol2 + }; +protected: + Protocol2::Base protocol2; +public: + enum PartId + { + }; + enum PortId + { + port_protocol1, + port_protocol2 + }; + virtual void bindPort( bool isBorder, int portId, int index ); + virtual void unbindPort( bool isBorder, int portId, int index ); + virtual void inject( const UMLRTMessage & message ); + virtual void initialize( const UMLRTMessage & message ); + const char * getCurrentStateString() const; +private: + enum State + { + State1, + State1__State1, + State1__State2, + State1__boundary, + State2, + State3, + State4, + SPECIAL_INTERNAL_STATE_TOP, + SPECIAL_INTERNAL_STATE_UNVISITED + }; + const char * stateNames[9]; + State currentState; + State history[1]; + void save_history( State compositeState, State subState ); + bool check_history( State compositeState, State subState ); + void update_state( State newState ); + void actionchain_____Initial( const UMLRTMessage * msg ); + void actionchain_____State1__new_transition_1( const UMLRTMessage * msg ); + void actionchain_____State1__new_transition_10( const UMLRTMessage * msg ); + void actionchain_____State1__new_transition_11( const UMLRTMessage * msg ); + void actionchain_____State1__new_transition_12( const UMLRTMessage * msg ); + void actionchain_____State1__new_transition_13( const UMLRTMessage * msg ); + void actionchain_____State1__new_transition_2( const UMLRTMessage * msg ); + void actionchain_____State1__new_transition_3_to_unvisited_boundary( const UMLRTMessage * msg ); + void actionchain_____State1__new_transition_4_to_visited_boundary( const UMLRTMessage * msg ); + void actionchain_____State1__new_transition_5( const UMLRTMessage * msg ); + void actionchain_____State1__new_transition_6( const UMLRTMessage * msg ); + void actionchain_____State1__new_transition_7( const UMLRTMessage * msg ); + void actionchain_____State1__new_transition_8( const UMLRTMessage * msg ); + void actionchain_____State1__new_transition_9( const UMLRTMessage * msg ); + void actionchain_____State1__transition0( const UMLRTMessage * msg ); + void actionchain_____State1__transition1( const UMLRTMessage * msg ); + void actionchain_____State1__transition2( const UMLRTMessage * msg ); + void actionchain_____transition1( const UMLRTMessage * msg ); + void actionchain_____transition2( const UMLRTMessage * msg ); + void actionchain_____transition3( const UMLRTMessage * msg ); + State junction_____State1__connectionPoint0( const UMLRTMessage * msg ); + State junction_____State1__connectionPoint1( const UMLRTMessage * msg ); + State junction_____State1__connectionPoint3( const UMLRTMessage * msg ); + State junction_____State1__new_exitpoint_1( const UMLRTMessage * msg ); + State choice_____State1__deephistory( const UMLRTMessage * msg ); + State state_____State1__State1( const UMLRTMessage * msg ); + State state_____State1__State2( const UMLRTMessage * msg ); + State state_____State1__boundary( const UMLRTMessage * msg ); + State state_____State2( const UMLRTMessage * msg ); + State state_____State3( const UMLRTMessage * msg ); + State state_____State4( const UMLRTMessage * msg ); +}; +extern const UMLRTCapsuleClass Top; + +#endif + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/TopControllers.cc b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/TopControllers.cc new file mode 100644 index 000000000..b3ecea73a --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/TopControllers.cc @@ -0,0 +1,102 @@ + +#include "TopControllers.hh" + +#include "Top.hh" +#include "umlrtcapsuleclass.hh" +#include "umlrtcommsport.hh" +#include "umlrtcommsportfarend.hh" +#include "umlrtcontroller.hh" +#include "umlrtslot.hh" +#include <cstddef> + + +static UMLRTController DefaultController_( "DefaultController" ); + +UMLRTController * DefaultController = &DefaultController_; + +static UMLRTCommsPortFarEnd borderfarEndList_Top[] = +{ + { + 0, + NULL + }, + { + 0, + NULL + } +}; + +UMLRTCommsPort borderports_Top[] = +{ + { + &Top, + Capsule_Top::borderport_protocol1, + &Top_slots[InstId_Top], + 1, + borderfarEndList_Top, + NULL, + NULL, + "", + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + true + }, + { + &Top, + Capsule_Top::borderport_protocol2, + &Top_slots[InstId_Top], + 1, + &borderfarEndList_Top[1], + NULL, + NULL, + "", + true, + true, + true, + false, + false, + false, + false, + false, + false, + false, + true + } +}; + +static const UMLRTCommsPort * borderports_Top_ptrs[] = +{ + &borderports_Top[0], + &borderports_Top[1] +}; + +static Capsule_Top top( &Top, &Top_slots[InstId_Top], borderports_Top_ptrs, NULL, true ); + +UMLRTSlot Top_slots[] = +{ + { + "Top", + 0, + &Top, + NULL, + 0, + &top, + &DefaultController_, + 0, + NULL, + 2, + borderports_Top, + NULL, + true, + false + } +}; + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/TopControllers.hh b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/TopControllers.hh new file mode 100644 index 000000000..0d5aac67e --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/TopControllers.hh @@ -0,0 +1,18 @@ + +#ifndef TOPCONTROLLERS_HH +#define TOPCONTROLLERS_HH + +class UMLRTController; +struct UMLRTCommsPort; +struct UMLRTSlot; + +enum CapsuleInstanceId +{ + InstId_Top +}; +extern UMLRTController * DefaultController; +extern UMLRTCommsPort borderports_Top[]; +extern UMLRTSlot Top_slots[]; + +#endif + diff --git a/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/TopMain.cc b/models/tests/codepattern/statemachines/AmbiguousTransitions2/expected_src/TopMain.cc new file mode 100644 index 000000000..bf88ec44f --- /dev/null +++ b/models/tests/codepattern/statemachines/AmbiguousTransitions2/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, 1 ); + + if( ! UMLRTMain::targetStartup() ) + return EXIT_FAILURE; + + DefaultController->spawn(); + + if( ! UMLRTMain::mainLoop() ) + return UMLRTMain::targetShutdown( false ); + + DefaultController->join(); + + return UMLRTMain::targetShutdown( true ); +} diff --git a/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp/src/org/eclipse/papyrusrt/codegen/cpp/UMLPrettyPrinter.xtend b/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp/src/org/eclipse/papyrusrt/codegen/cpp/UMLPrettyPrinter.xtend new file mode 100644 index 000000000..a1b0659cb --- /dev/null +++ b/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp/src/org/eclipse/papyrusrt/codegen/cpp/UMLPrettyPrinter.xtend @@ -0,0 +1,80 @@ +/***************************************************************************** + * Copyright (c) 2017 Zeligsoft 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 + * + * Contributors: + * Ernesto Posse - Initial API and implementation + *****************************************************************************/ + +package org.eclipse.papyrusrt.codegen.cpp + +import org.eclipse.uml2.uml.CallEvent +import org.eclipse.uml2.uml.NamedElement +import org.eclipse.uml2.uml.Pseudostate +import org.eclipse.uml2.uml.PseudostateKind +import org.eclipse.uml2.uml.State +import org.eclipse.uml2.uml.Transition +import org.eclipse.uml2.uml.Trigger +import static extension org.eclipse.papyrusrt.xtumlrt.util.NamesUtil.* +import static extension org.eclipse.papyrusrt.xtumlrt.external.predefined.UMLRTStateMachProfileUtil.* + +/** + * @author epp + */ +class UMLPrettyPrinter { + + dispatch def String text(NamedElement element) + '''«element.name»''' + + dispatch def String text(State state) + ''' + state «state.effectiveQualifiedName» + ''' + + dispatch def String text(Pseudostate pseudostate) + ''' + «pseudostate.pseudoStateKindText» «pseudostate.effectiveQualifiedName» + ''' + + private def pseudoStateKindText(Pseudostate pseudostate) { + switch pseudostate.kind { + case PseudostateKind.CHOICE_LITERAL: "choice point" + case PseudostateKind.JUNCTION_LITERAL: "junction point" + case PseudostateKind.ENTRY_POINT_LITERAL: "entry point" + case PseudostateKind.EXIT_POINT_LITERAL: "exit point" + case PseudostateKind.INITIAL_LITERAL: "initial point" + case PseudostateKind.DEEP_HISTORY_LITERAL: "deep history point" + case PseudostateKind.TERMINATE_LITERAL: "terminate point" + default: "pseudostate" + } + } + + dispatch def String text(Transition transition) + ''' + transition «transition.name» + with triggers «FOR t : getTriggers( transition ) BEFORE '[' SEPARATOR ';' AFTER ']'»«t.text»«ENDFOR» + from «transition.source.text» + to «transition.target.text» + ''' + + dispatch def String text(Trigger trigger) + '''«trigger.event.text» on «FOR p : trigger.ports BEFORE '[' SEPARATOR ';' AFTER ']'»«p.name»«ENDFOR»''' + + dispatch def String text(CallEvent event) + '''«event.operation.name»''' + + def String oneLineListText(Iterable<? extends NamedElement> list) + '''«FOR element : list BEFORE '[' SEPARATOR ';' AFTER ']'»«element.text»«ENDFOR»''' + + def String multiLineListText(Iterable<? extends NamedElement> list) + ''' + «FOR element : list BEFORE '[\n' AFTER ']'» + «element.text»; + «ENDFOR» + ''' + +}
\ No newline at end of file diff --git a/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp/src/org/eclipse/papyrusrt/codegen/cpp/validation/PreUML2xtumlrtValidator.xtend b/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp/src/org/eclipse/papyrusrt/codegen/cpp/validation/PreUML2xtumlrtValidator.xtend index 5b58af230..fc1342d1f 100644 --- a/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp/src/org/eclipse/papyrusrt/codegen/cpp/validation/PreUML2xtumlrtValidator.xtend +++ b/plugins/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp/src/org/eclipse/papyrusrt/codegen/cpp/validation/PreUML2xtumlrtValidator.xtend @@ -22,14 +22,22 @@ import org.eclipse.papyrusrt.xtumlrt.util.DetailedException import org.eclipse.uml2.uml.Constraint import org.eclipse.uml2.uml.MultiplicityElement import org.eclipse.uml2.uml.NamedElement +import org.eclipse.uml2.uml.State +import org.eclipse.uml2.uml.StateMachine +import org.eclipse.uml2.uml.Transition +import org.eclipse.uml2.uml.Trigger +import org.eclipse.papyrusrt.codegen.cpp.UMLPrettyPrinter +import static extension org.eclipse.papyrusrt.xtumlrt.util.ContainmentUtils.* +import static extension org.eclipse.papyrusrt.xtumlrt.external.predefined.UMLRTStateMachProfileUtil.* /** * Pre UML2xtumlrt validation * @author ysroh - * */ class PreUML2xtumlrtValidator implements TransformValidator<List<EObject>> { + extension UMLPrettyPrinter prettyPrinter = new UMLPrettyPrinter + override MultiStatus validate(List<EObject> context) { val status = new MultiStatus(CodeGenPlugin.ID, IStatus.INFO, "UML-RT Code Generator Invoked", null) for (e : context) { @@ -46,7 +54,7 @@ class PreUML2xtumlrtValidator implements TransformValidator<List<EObject>> { val unique = element.namespace.ownedMembers.filter[e | e !== element && e.eClass === element.eClass && e.name == element.name].empty if(!unique){ // should not allow two capsules with same name - val status = createStatus("More than one element named " + element.qualifiedName + val status = createWarningStatus("More than one element named " + element.qualifiedName + " exist in the same namespace") result.add(status) } @@ -59,7 +67,7 @@ class PreUML2xtumlrtValidator implements TransformValidator<List<EObject>> { val guard = UMLRTGuard.getInstance(o) if (guard !== null && !guard.bodies.containsKey(CppCodeGenPlugin.LANGUAGE)) { var qualifiedName = o.validQualifiedName - val status = createStatus("Guard " + qualifiedName + " must have C++ specification") + val status = createErrorStatus("Guard " + qualifiedName + " must have C++ specification") result.add(status) } } @@ -75,12 +83,97 @@ class PreUML2xtumlrtValidator implements TransformValidator<List<EObject>> { } } - protected def Status createStatus(String msg) { + /** + * Validates a state. + * + * <p>Checks whether there are conflicting outgoing transitions from the state. + * + * @param state - A {@link State}. + * @param result - A {@link MultiStatus}. + */ + protected dispatch def void validateElement(State state, MultiStatus result) { + val containingStates = + state.getAllOwningElementsUptoType(StateMachine) + .filter[it instanceof State] + .map[it as State] + val allOutgoingTransitionsHierarchy = containingStates.map[allOutgoingTransitions].flatten + for (transition : state.allOutgoingTransitions) { + val otherEquivalentTransitions = allOutgoingTransitionsHierarchy.filter[conflict(it, transition)] + if (!otherEquivalentTransitions.empty) { + val qualifiedName = state.validQualifiedName + val conflictingTransitions = otherEquivalentTransitions.multiLineListText + val status = createWarningStatus("State " + qualifiedName + + " has at least two conflicting (ambiguous) outgoing transitions with the same trigger and guard. \n" + + "Transition " + transition.text + "conflicts with the following:\n" + + conflictingTransitions + "\n" + + "The transition with the deepest source will be selected and the others ignored.\n" + + "If there is more than one such transitions any one of them will be selected and others will be ignored.\n" + + "Note that the transitions may have a different source, namely a composite state that contains " + qualifiedName + ".\n" + ) + result.add(status) + return + } + } + } + + /** + * @param transition1 - A {@link Transition}. + * @param transition2 - A {@link Transition}. + * @return {@code true} iff the two transition conflict, i.e. if they are not the same but + * they have a common trigger (cf. {@link #commonTrigger}) and the same guard (cf. {@link #sameGuard}). + * Note that this method already assumes that the source of one of the transitions is the same as or is + * contained in the source of the other transition. + */ + private def conflict(Transition transition1, Transition transition2) { + transition1 !== transition2 + && commonTrigger(transition1, transition2) + && sameGuard(transition1, transition2) + } + + /** + * @param transition1 - A {@link Transition}. + * @param transition2 - A {@link Transition}. + * @return {@code true} iff the two transition have equal guards or at least guards with equal specification. + */ + private def sameGuard(Transition transition1, Transition transition2) { + transition1.guard == transition2.guard + || transition1.guard?.specification == transition2.guard?.specification + } + + /** + * @param transition1 - A {@link Transition}. + * @param transition2 - A {@link Transition}. + * @return {@code true} iff the two transition have at least one equivalent trigger (cf. {@link #equivalentTrigger}) + */ + private def commonTrigger(Transition transition1, Transition transition2) + { + transition1.triggers.exists[t1 | transition2.triggers.exists[t2 | equivalentTrigger(t1, t2)]] + } + + /** + * @param trigger1 - A {@link Trigger}. + * @param trigger2 - A {@link Trigger}. + * @return {@code true} iff the two triggers are eequivalent, i.e., iff they are equal or + * the have the same event and at least one port in common. + */ + private def equivalentTrigger(Trigger trigger1, Trigger trigger2) { + trigger1 == trigger2 + || trigger1.event == trigger2.event + && trigger1.ports.exists[trigger2.ports.contains(it)] + } + + protected def Status createErrorStatus(String msg) { val exception = new DetailedException(msg) val status = new Status(IStatus.ERROR, CodeGenPlugin.ID, exception.message, exception) status } + protected def Status createWarningStatus(String msg) { + val exception = new DetailedException(msg) + val status = new Status(IStatus.WARNING, CodeGenPlugin.ID, exception.message, exception) + status + } + protected def String getValidQualifiedName(EObject context) { var qualifiedName = "" var container = context diff --git a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.edit/.classpath b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.edit/.classpath index 0cef8851a..50aae142c 100644 --- a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.edit/.classpath +++ b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.edit/.classpath @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="src" path="src-gen"/> <classpathentry kind="src" path="src"/> - <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/> <classpathentry kind="output" path="bin"/> </classpath> diff --git a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.edit/META-INF/MANIFEST.MF b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.edit/META-INF/MANIFEST.MF index 82944ab8e..b6fd986aa 100644 --- a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.edit/META-INF/MANIFEST.MF +++ b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.edit/META-INF/MANIFEST.MF @@ -7,7 +7,7 @@ Bundle-ClassPath: . Bundle-Activator: org.eclipse.papyrusrt.umlrt.tooling.compare.umlrt.internal.provider.UMLRTEditPlugin$Implementation Bundle-Vendor: %providerName Bundle-Localization: plugin -Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: org.eclipse.papyrusrt.umlrt.tooling.compare.umlrt.internal.accessor;x-internal:=true, org.eclipse.papyrusrt.umlrt.tooling.compare.umlrt.internal.provider;x-internal:=true, org.eclipse.papyrusrt.umlrt.tooling.compare.umlrt.internal.provider.custom;x-internal:=true, diff --git a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare/.classpath b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare/.classpath index 6a42377b5..f0c554985 100644 --- a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare/.classpath +++ b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare/.classpath @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="src-gen"/> diff --git a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare/META-INF/MANIFEST.MF b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare/META-INF/MANIFEST.MF index 4cbdb1f49..d487631d1 100644 --- a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare/META-INF/MANIFEST.MF +++ b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare/META-INF/MANIFEST.MF @@ -19,7 +19,7 @@ Require-Bundle: org.eclipse.ui;bundle-version="[3.109.0,4.0.0)", org.eclipse.emf.compare.diagram;bundle-version="[2.5.0,3.0.0)", org.eclipse.gmf.runtime.notation;bundle-version="[1.8.0,2.0.0)", org.eclipse.emf.compare.rcp;bundle-version="[2.5.0,3.0.0)" -Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: org.eclipse.papyrusrt.umlrt.tooling.compare, org.eclipse.papyrusrt.umlrt.tooling.compare.internal;x-friends:="org.eclipse.papyrusrt.umlrt.tooling.compare.edit, org.eclipse.papyrusrt.umlrt.tooling.compare.tests, diff --git a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine/src/org/eclipse/papyrusrt/umlrt/tooling/diagram/statemachine/internal/editpolicies/Messages.java b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine/src/org/eclipse/papyrusrt/umlrt/tooling/diagram/statemachine/internal/editpolicies/Messages.java new file mode 100644 index 000000000..c75dc80af --- /dev/null +++ b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine/src/org/eclipse/papyrusrt/umlrt/tooling/diagram/statemachine/internal/editpolicies/Messages.java @@ -0,0 +1,46 @@ +/***************************************************************************** + * Copyright (c) 2017 Christian W. Damus 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 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine.internal.editpolicies; + +import org.eclipse.osgi.util.NLS; + +/** + * Localized messages for the package. + */ +class Messages extends NLS { + + private static final String BUNDLE_NAME = "org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine.internal.editpolicies.messages"; //$NON-NLS-1$ + + public static String RTCustomStateNavigationEditPolicy_0; + public static String RTCustomStateNavigationEditPolicy_1; + public static String RTCustomStateNavigationEditPolicy_10; + public static String RTCustomStateNavigationEditPolicy_11; + public static String RTCustomStateNavigationEditPolicy_2; + public static String RTCustomStateNavigationEditPolicy_3; + public static String RTCustomStateNavigationEditPolicy_4; + public static String RTCustomStateNavigationEditPolicy_5; + public static String RTCustomStateNavigationEditPolicy_6; + public static String RTCustomStateNavigationEditPolicy_7; + public static String RTCustomStateNavigationEditPolicy_8; + public static String RTCustomStateNavigationEditPolicy_9; + + static { + // initialize resource bundle + NLS.initializeMessages(BUNDLE_NAME, Messages.class); + } + + private Messages() { + super(); + } +} diff --git a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine/src/org/eclipse/papyrusrt/umlrt/tooling/diagram/statemachine/internal/editpolicies/RTCustomStateNavigationEditPolicy.java b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine/src/org/eclipse/papyrusrt/umlrt/tooling/diagram/statemachine/internal/editpolicies/RTCustomStateNavigationEditPolicy.java index cc580ee97..8e2e95460 100644 --- a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine/src/org/eclipse/papyrusrt/umlrt/tooling/diagram/statemachine/internal/editpolicies/RTCustomStateNavigationEditPolicy.java +++ b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine/src/org/eclipse/papyrusrt/umlrt/tooling/diagram/statemachine/internal/editpolicies/RTCustomStateNavigationEditPolicy.java @@ -16,6 +16,7 @@ package org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine.internal.editpo import static org.eclipse.papyrusrt.umlrt.tooling.diagram.common.utils.UMLRTStateMachineDiagramUtils.getStateMachineDiagram; import java.util.List; +import java.util.Optional; import java.util.function.Supplier; import org.eclipse.core.commands.ExecutionException; @@ -201,19 +202,37 @@ public class RTCustomStateNavigationEditPolicy extends NavigationEditPolicy { int promptToCreateNestedDiagram() { Shell parentShell = getHost().getViewer().getControl().getShell(); - boolean isInheritedCompositeState = getState().isComposite() + boolean isCompositeState = getState().isComposite(); + boolean isInheritedCompositeState = isCompositeState && UMLRTExtensionUtil.isVirtualElement(getState()); + boolean isRedefinitionOfCompositeState = Optional.of(getState()) + .map(UMLRTExtensionUtil::getRedefinedElement) + .map(State::isComposite) + .orElse(false); - return (isInheritedCompositeState) + return isInheritedCompositeState ? DialogPreferences.custom(MessageDialog.QUESTION_WITH_CANCEL, parentShell, - "Redefine Composite State", - "This composite state is inherited. Redefine the state to create a diagram for it or open the parent diagram?", + Messages.RTCustomStateNavigationEditPolicy_0, + Messages.RTCustomStateNavigationEditPolicy_1, null, SWT.SHEET, - "Redefine", "Open Parent") - : DialogPreferences.yesNoCancel(parentShell, - "Convert to Composite State", - "Convert the state to a composite state and open a new diagram on its contents?", - CONFIRMATION_DIALOG_ID); + Messages.RTCustomStateNavigationEditPolicy_2, + Messages.RTCustomStateNavigationEditPolicy_3) + : isCompositeState + ? isRedefinitionOfCompositeState + ? DialogPreferences.custom(MessageDialog.QUESTION_WITH_CANCEL, parentShell, + Messages.RTCustomStateNavigationEditPolicy_4, + Messages.RTCustomStateNavigationEditPolicy_5, + null, SWT.SHEET, + Messages.RTCustomStateNavigationEditPolicy_6, + Messages.RTCustomStateNavigationEditPolicy_3) + : DialogPreferences.yesNoCancel(parentShell, + Messages.RTCustomStateNavigationEditPolicy_4, + Messages.RTCustomStateNavigationEditPolicy_7, + CONFIRMATION_DIALOG_ID) + : DialogPreferences.yesNoCancel(parentShell, + Messages.RTCustomStateNavigationEditPolicy_8, + Messages.RTCustomStateNavigationEditPolicy_9, + CONFIRMATION_DIALOG_ID); } IGraphicalEditPart getGraphicalHost() { @@ -229,7 +248,7 @@ public class RTCustomStateNavigationEditPolicy extends NavigationEditPolicy { } private ICommand getConnectionPointMatchingCommand(Supplier<? extends Diagram> newDiagram) { - return new AbstractTransactionalCommand(getEditingDomain(), "Arrange Connection Points", null) { + return new AbstractTransactionalCommand(getEditingDomain(), Messages.RTCustomStateNavigationEditPolicy_10, null) { @Override protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { @@ -321,7 +340,7 @@ public class RTCustomStateNavigationEditPolicy extends NavigationEditPolicy { * the diagram */ public OpenDiagramCommand(TransactionalEditingDomain domain, Diagram diagram) { - super(domain, "Open Diagram", null); + super(domain, Messages.RTCustomStateNavigationEditPolicy_11, null); diagramToOpen = diagram; } @@ -336,7 +355,7 @@ public class RTCustomStateNavigationEditPolicy extends NavigationEditPolicy { } return CommandResult.newOKCommandResult(); } catch (Exception e) { - throw new ExecutionException("Can't open diagram", e); + throw new ExecutionException("Can't open diagram", e); //$NON-NLS-1$ } } } diff --git a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine/src/org/eclipse/papyrusrt/umlrt/tooling/diagram/statemachine/internal/editpolicies/messages.properties b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine/src/org/eclipse/papyrusrt/umlrt/tooling/diagram/statemachine/internal/editpolicies/messages.properties new file mode 100644 index 000000000..f2a077ca4 --- /dev/null +++ b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.diagram.statemachine/src/org/eclipse/papyrusrt/umlrt/tooling/diagram/statemachine/internal/editpolicies/messages.properties @@ -0,0 +1,24 @@ +# +# Copyright (c) 2017 Christian W. Damus 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 +# +# Contributors: +# Christian W. Damus - Initial API and implementation +# + +RTCustomStateNavigationEditPolicy_0=Redefine Composite State +RTCustomStateNavigationEditPolicy_1=This composite state is inherited. Redefine the state to create a diagram for it or open the parent diagram? +RTCustomStateNavigationEditPolicy_10=Arrange Connection Points +RTCustomStateNavigationEditPolicy_11=Open Diagram +RTCustomStateNavigationEditPolicy_2=Redefine +RTCustomStateNavigationEditPolicy_3=Open Parent +RTCustomStateNavigationEditPolicy_4=Create Composite State Diagram +RTCustomStateNavigationEditPolicy_5=This composite state redefines an inherited composite state. Create a diagram for it or open the parent diagram? +RTCustomStateNavigationEditPolicy_6=Create Diagram +RTCustomStateNavigationEditPolicy_7=This composite state redefines an inherited state. Create a diagram for it? +RTCustomStateNavigationEditPolicy_8=Convert to Composite State +RTCustomStateNavigationEditPolicy_9=Convert the state to a composite state and open a new diagram on its contents? diff --git a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.modelexplorer/META-INF/MANIFEST.MF b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.modelexplorer/META-INF/MANIFEST.MF index b6e89db2d..dcbc85e0b 100644 --- a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.modelexplorer/META-INF/MANIFEST.MF +++ b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.modelexplorer/META-INF/MANIFEST.MF @@ -40,7 +40,9 @@ Require-Bundle: org.eclipse.ui;bundle-version="[3.109.0,4.0.0)", org.eclipse.papyrus.infra.ui.emf;bundle-version="[2.0.0,3.0.0)", org.eclipse.papyrusrt.umlrt.tooling.ui;bundle-version="[0.9.0,1.0.0)", org.eclipse.papyrus.views.modelexplorer.newchild;bundle-version="[1.2.0,2.0.0)", - org.eclipse.papyrusrt.umlrt.uml;bundle-version="[0.9.0,1.0.0)" + org.eclipse.papyrusrt.umlrt.uml;bundle-version="[0.9.0,1.0.0)", + org.eclipse.papyrus.uml.textedit.property.xtext.ui;bundle-version="[2.0.0,3.0.0)", + org.eclipse.papyrus.uml.textedit.parameter.xtext.ui;bundle-version="[2.0.0,3.0.0)" Bundle-ManifestVersion: 2 Bundle-Activator: org.eclipse.papyrusrt.umlrt.tooling.modelexplorer.Activator Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.modelexplorer/plugin.xml b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.modelexplorer/plugin.xml index 54285a3fe..d1995dfc6 100644 --- a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.modelexplorer/plugin.xml +++ b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.modelexplorer/plugin.xml @@ -90,6 +90,26 @@ editorConfiguration="org.eclipse.papyrusrt.umlrt.tooling.modelexplorer.preferences.RTPortDirectEditorConfiguration"> </simpleeditor> </DirectEditor> + <DirectEditor + language="UML RT" + objectToEdit="org.eclipse.uml2.uml.Property"> + <Priority + name="Highest"> + </Priority> + <simpleeditor + editorConfiguration="org.eclipse.papyrusrt.umlrt.tooling.modelexplorer.preferences.CapsulePartDirectEditorConfiguration"> + </simpleeditor> + </DirectEditor> + <DirectEditor + language="UML RT" + objectToEdit="org.eclipse.uml2.uml.Parameter"> + <Priority + name="Highest"> + </Priority> + <simpleeditor + editorConfiguration="org.eclipse.papyrusrt.umlrt.tooling.modelexplorer.preferences.RTParameterDirectEditorConfiguration"> + </simpleeditor> + </DirectEditor> </extension> <extension point="org.eclipse.papyrus.infra.architecture.models"> diff --git a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.modelexplorer/src/org/eclipse/papyrusrt/umlrt/tooling/modelexplorer/preferences/CapsulePartDirectEditorConfiguration.java b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.modelexplorer/src/org/eclipse/papyrusrt/umlrt/tooling/modelexplorer/preferences/CapsulePartDirectEditorConfiguration.java new file mode 100644 index 000000000..4bce27a37 --- /dev/null +++ b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.modelexplorer/src/org/eclipse/papyrusrt/umlrt/tooling/modelexplorer/preferences/CapsulePartDirectEditorConfiguration.java @@ -0,0 +1,52 @@ +/***************************************************************************** + * Copyright (c) 2017 CEA LIST 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 + * + * Contributors: + * CEA LIST - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrusrt.umlrt.tooling.modelexplorer.preferences; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; +import org.eclipse.papyrus.uml.textedit.property.xtext.ui.contributions.PropertyXtextDirectEditorConfiguration; +import org.eclipse.papyrusrt.umlrt.core.utils.CapsulePartUtils; +import org.eclipse.uml2.uml.Property; + +/** + * Specific editor for UML-RT Port. By default, this is a simple direct editor. + */ +public class CapsulePartDirectEditorConfiguration extends PropertyXtextDirectEditorConfiguration { + + + @Override + public String getTextToEdit(final Object objectToEdit) { + + + if (CapsulePartUtils.isCapsulePart((Property) objectToEdit)) { + return ((Property) objectToEdit).getName(); + } else { + return super.getTextToEdit(objectToEdit); + } + } + + @Override + public IParser createParser(final EObject semanticObject) { + if (CapsulePartUtils.isCapsulePart((Property) semanticObject)) { + return new UMLRTElementDirectEditorParser(getTextToEdit(objectToEdit)); + } else { + return super.createParser(semanticObject); + } + + } + + + + +} diff --git a/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.modelexplorer/src/org/eclipse/papyrusrt/umlrt/tooling/modelexplorer/preferences/RTParameterDirectEditorConfiguration.java b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.modelexplorer/src/org/eclipse/papyrusrt/umlrt/tooling/modelexplorer/preferences/RTParameterDirectEditorConfiguration.java new file mode 100644 index 000000000..033eb12ce --- /dev/null +++ b/plugins/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.modelexplorer/src/org/eclipse/papyrusrt/umlrt/tooling/modelexplorer/preferences/RTParameterDirectEditorConfiguration.java @@ -0,0 +1,52 @@ +/***************************************************************************** + * Copyright (c) 2017 CEA LIST 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 + * + * Contributors: + * CEA LIST - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrusrt.umlrt.tooling.modelexplorer.preferences; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; +import org.eclipse.papyrus.uml.textedit.parameter.xtext.ui.contributions.ParameterXtextDirectEditorConfiguration; +import org.eclipse.papyrusrt.umlrt.core.utils.RTMessageUtils; +import org.eclipse.uml2.uml.Parameter; + +/** + * Specific editor for UML-RT Port. By default, this is a simple direct editor. + */ +public class RTParameterDirectEditorConfiguration extends ParameterXtextDirectEditorConfiguration { + + + @Override + public String getTextToEdit(final Object objectToEdit) { + + + if (RTMessageUtils.isRTMessageParameter((EObject) objectToEdit)) { + return ((Parameter) objectToEdit).getName(); + } else { + return super.getTextToEdit(objectToEdit); + } + } + + @Override + public IParser createParser(final EObject semanticObject) { + if (RTMessageUtils.isRTMessageParameter(semanticObject)) { + return new UMLRTElementDirectEditorParser(getTextToEdit(objectToEdit)); + } else { + return super.createParser(semanticObject); + } + + } + + + + +} diff --git a/plugins/xtumlrt/common/org.eclipse.papyrusrt.xtumlrt.external/src/org/eclipse/papyrusrt/xtumlrt/external/predefined/UMLRTStateMachProfileUtil.xtend b/plugins/xtumlrt/common/org.eclipse.papyrusrt.xtumlrt.external/src/org/eclipse/papyrusrt/xtumlrt/external/predefined/UMLRTStateMachProfileUtil.xtend index 9d2891170..703f1b8a8 100644 --- a/plugins/xtumlrt/common/org.eclipse.papyrusrt.xtumlrt.external/src/org/eclipse/papyrusrt/xtumlrt/external/predefined/UMLRTStateMachProfileUtil.xtend +++ b/plugins/xtumlrt/common/org.eclipse.papyrusrt.xtumlrt.external/src/org/eclipse/papyrusrt/xtumlrt/external/predefined/UMLRTStateMachProfileUtil.xtend @@ -27,6 +27,7 @@ import org.eclipse.papyrusrt.umlrt.profile.statemachine.UMLRTStateMachines.RTSta import org.eclipse.papyrusrt.umlrt.profile.statemachine.UMLRTStateMachines.RTRegion import static extension org.eclipse.papyrusrt.umlrt.uml.util.UMLRTExtensionUtil.* +import org.eclipse.uml2.uml.Vertex class UMLRTStateMachProfileUtil { @@ -177,6 +178,26 @@ class UMLRTStateMachProfileUtil getTransitions( stateMachine?.ownedRegion ) } + static def Iterable<Transition> getAllIncomingTransitions( State state ) + { + state.incomings.filter[!excluded] + getIndirectIncomingTransitions( state ) + } + + static def Iterable<Transition> getAllOutgoingTransitions( State state ) + { + state.outgoings.filter[!excluded] + getIndirectOutgoingTransitions( state ) + } + + static def Iterable<Transition> getIndirectIncomingTransitions( State state ) + { + getEntryPoints( state ).map[incomings].flatten.filter[!excluded] + } + + static def Iterable<Transition> getIndirectOutgoingTransitions( State state ) + { + getExitPoints( state ).map[outgoings].flatten.filter[!excluded] + } + static def Behavior getEffect( Transition transition ) { val behaviours = transition?.getUMLRTContents(UMLPackage.Literals.TRANSITION__EFFECT).filter( Behavior ).filter[!excluded] diff --git a/plugins/xtumlrt/common/org.eclipse.papyrusrt.xtumlrt.util/src/org/eclipse/papyrusrt/xtumlrt/util/ContainmentUtils.xtend b/plugins/xtumlrt/common/org.eclipse.papyrusrt.xtumlrt.util/src/org/eclipse/papyrusrt/xtumlrt/util/ContainmentUtils.xtend index 94002de76..003ed43da 100644 --- a/plugins/xtumlrt/common/org.eclipse.papyrusrt.xtumlrt.util/src/org/eclipse/papyrusrt/xtumlrt/util/ContainmentUtils.xtend +++ b/plugins/xtumlrt/common/org.eclipse.papyrusrt.xtumlrt.util/src/org/eclipse/papyrusrt/xtumlrt/util/ContainmentUtils.xtend @@ -54,4 +54,15 @@ class ContainmentUtils { } } + static def Iterable<org.eclipse.uml2.uml.Element> getAllOwningElementsUptoType(org.eclipse.uml2.uml.Element element, Class<?> type) { + if (element.owner === null || type !== null && type.isInstance(element)) { + #[element] + } else { + getAllOwningElementsUptoType(element.owner, type) + #[element] + } + } + + static def Iterable<org.eclipse.uml2.uml.Element> getAllOwningElements(org.eclipse.uml2.uml.Element element) { + getAllOwningElementsUptoType(element, null) + } } diff --git a/tests/junit/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp.test/models/models_to_skip.txt b/tests/junit/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp.test/models/models_to_skip.txt index beb8d0e43..2e5579932 100644 --- a/tests/junit/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp.test/models/models_to_skip.txt +++ b/tests/junit/umlrt/codegen/org.eclipse.papyrusrt.codegen.cpp.test/models/models_to_skip.txt @@ -1,3 +1,4 @@ +**AmbiguousTransitions* **Symbolic* **EffectiveNames* **ExclusionsCompositeStates* diff --git a/tests/junit/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.tests/.classpath b/tests/junit/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.tests/.classpath index 098194ca4..eca7bdba8 100644 --- a/tests/junit/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.tests/.classpath +++ b/tests/junit/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.tests/.classpath @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="src" path="src"/> <classpathentry kind="output" path="bin"/> diff --git a/tests/junit/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.tests/META-INF/MANIFEST.MF b/tests/junit/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.tests/META-INF/MANIFEST.MF index be6f0442c..b7433ed6f 100644 --- a/tests/junit/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.tests/META-INF/MANIFEST.MF +++ b/tests/junit/umlrt/tooling/org.eclipse.papyrusrt.umlrt.tooling.compare.tests/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-Name: Papyrus-RT Tests for Compare Plugin Bundle-SymbolicName: org.eclipse.papyrusrt.umlrt.tooling.compare.tests Bundle-Version: 0.9.0.qualifier Bundle-Vendor: Eclipse Modeling Project -Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Require-Bundle: org.junit;bundle-version="[4.12.0,5.0.0)", org.eclipse.papyrusrt.umlrt.tooling.compare;bundle-version="[0.9.0,1.0.0)", |