blob: a65c25611bb7dea70b2578bcbf700e5ae90d26c7 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:C_Cpp="http://www.eclipse.org/papyrus/C_Cpp/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
<uml:Model xmi:id="_dRQ7gG4cEeiQkc1FO4uxgA" name="TestCGenerator">
<packageImport xmi:type="uml:PackageImport" xmi:id="_d46xYG4cEeiQkc1FO4uxgA">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
<packagedElement xmi:type="uml:Package" xmi:id="_87wFwH0OEeiDS63tULewcA" name="Bathtub">
<packagedElement xmi:type="uml:Class" xmi:id="_mdTNQG4cEeiQkc1FO4uxgA" name="Bathtub" classifierBehavior="_MYi60G4wEeiQkc1FO4uxgA" isActive="true">
<ownedAttribute xmi:type="uml:Property" xmi:id="_o3n6oG4cEeiQkc1FO4uxgA" name="Lm">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_pXpegG4cEeiQkc1FO4uxgA" name="l">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
</ownedAttribute>
<ownedBehavior xmi:type="uml:StateMachine" xmi:id="_MYi60G4wEeiQkc1FO4uxgA" name="ButhtubStateMachine">
<region xmi:type="uml:Region" xmi:id="_OEbN0G4wEeiQkc1FO4uxgA" name="Region1">
<transition xmi:type="uml:Transition" xmi:id="_aa7QcG4wEeiQkc1FO4uxgA" source="_TWN3kG4wEeiQkc1FO4uxgA" target="_T2FqcG4wEeiQkc1FO4uxgA"/>
<transition xmi:type="uml:Transition" xmi:id="_a4vN0G4wEeiQkc1FO4uxgA" name="E2F" guard="_fwH04H0VEeiDS63tULewcA" source="_T2FqcG4wEeiQkc1FO4uxgA" target="_UPBu4G4wEeiQkc1FO4uxgA">
<ownedRule xmi:type="uml:Constraint" xmi:id="_fwH04H0VEeiDS63tULewcA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_d0KpEH0WEeiDS63tULewcA">
<language>C/C++</language>
<body>x &lt;= self->Lm - self->l</body>
</specification>
</ownedRule>
<effect xmi:type="uml:OpaqueBehavior" xmi:id="_wyJmAH7XEei0bqkaoBEVJQ" name="msg">
<language>C/C++</language>
<body>printf(&quot;New State is Filled \n&quot;);</body>
</effect>
<trigger xmi:type="uml:Trigger" xmi:id="_nYLSwH0SEeiDS63tULewcA" event="_GQC7oH0PEeiDS63tULewcA"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_bebU0G4wEeiQkc1FO4uxgA" source="_UPBu4G4wEeiQkc1FO4uxgA" target="_ZO0CoG4wEeiQkc1FO4uxgA"/>
<transition xmi:type="uml:Transition" xmi:id="_mnr4sH0MEeiDS63tULewcA" name="F2E" guard="__7tWIH0WEeiDS63tULewcA" source="_UPBu4G4wEeiQkc1FO4uxgA" target="_T2FqcG4wEeiQkc1FO4uxgA">
<ownedRule xmi:type="uml:Constraint" xmi:id="__7tWIH0WEeiDS63tULewcA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_F8fz4H0XEeiDS63tULewcA">
<language>C\C++</language>
<body>self->l-x==0</body>
</specification>
</ownedRule>
<effect xmi:type="uml:OpaqueBehavior" xmi:id="_8he68H7XEei0bqkaoBEVJQ" name="msg">
<language>C/C++</language>
<body>printf(&quot;New State is Empty \n&quot;);</body>
</effect>
<trigger xmi:type="uml:Trigger" xmi:id="_3jBJsH0SEeiDS63tULewcA" event="_HFFtQH0PEeiDS63tULewcA"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_EzhlMH0NEeiDS63tULewcA" name="F2FF" guard="_lriN8H0WEeiDS63tULewcA" source="_UPBu4G4wEeiQkc1FO4uxgA" target="_UPBu4G4wEeiQkc1FO4uxgA">
<ownedRule xmi:type="uml:Constraint" xmi:id="_lriN8H0WEeiDS63tULewcA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_vXKlwH0WEeiDS63tULewcA">
<language>C\C++</language>
<body>self->l+x&lt;self->Lm</body>
</specification>
</ownedRule>
<effect xmi:type="uml:OpaqueBehavior" xmi:id="_Nx2PgH7YEei0bqkaoBEVJQ" name="msg">
<language>C/C++</language>
<body>printf(&quot;Remain in the same state Filled \n&quot;);</body>
</effect>
<trigger xmi:type="uml:Trigger" xmi:id="_9IHJ8H0SEeiDS63tULewcA" event="_GQC7oH0PEeiDS63tULewcA"/>
</transition>
<transition xmi:type="uml:Transition" xmi:id="_rq22oH0XEeiDS63tULewcA" name="F2FR" guard="__6IzYH0XEeiDS63tULewcA" source="_UPBu4G4wEeiQkc1FO4uxgA" target="_UPBu4G4wEeiQkc1FO4uxgA">
<ownedRule xmi:type="uml:Constraint" xmi:id="__6IzYH0XEeiDS63tULewcA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_EayUEH0YEeiDS63tULewcA">
<language>C\C++</language>
<body>self->l-x > 0</body>
</specification>
</ownedRule>
<effect xmi:type="uml:OpaqueBehavior" xmi:id="_IH0r8H7YEei0bqkaoBEVJQ" name="msg">
<language>C/C++</language>
<body>printf(&quot;Remain in the same state Filled \n&quot;);</body>
</effect>
<trigger xmi:type="uml:Trigger" xmi:id="_7qne8H0XEeiDS63tULewcA" event="_HFFtQH0PEeiDS63tULewcA"/>
</transition>
<subvertex xmi:type="uml:Pseudostate" xmi:id="_TWN3kG4wEeiQkc1FO4uxgA" name="Initial1"/>
<subvertex xmi:type="uml:State" xmi:id="_T2FqcG4wEeiQkc1FO4uxgA" name="Empty"/>
<subvertex xmi:type="uml:State" xmi:id="_UPBu4G4wEeiQkc1FO4uxgA" name="Filled"/>
<subvertex xmi:type="uml:FinalState" xmi:id="_ZO0CoG4wEeiQkc1FO4uxgA" name="FinalState1"/>
</region>
</ownedBehavior>
<ownedOperation xmi:type="uml:Operation" xmi:id="_uaa00G4cEeiQkc1FO4uxgA" name="fill" visibility="public" method="_kFJtsH0QEeiDS63tULewcA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_ufxEsH0LEeiDS63tULewcA" name="x">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_vg57wG4cEeiQkc1FO4uxgA" name="withdraw" visibility="public" method="_Xw-7cH0SEeiDS63tULewcA">
<ownedParameter xmi:type="uml:Parameter" xmi:id="_yjtlcG4cEeiQkc1FO4uxgA" name="x">
<type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:type="uml:Operation" xmi:id="_CtKkwH1REeiOvJbQeRuWmA" name="run" method="_hbnPEH1REeiOvJbQeRuWmA"/>
<nestedClassifier xmi:type="uml:OpaqueBehavior" xmi:id="_kFJtsH0QEeiDS63tULewcA" name="fill" specification="_uaa00G4cEeiQkc1FO4uxgA">
<language>C/C++</language>
<body>printf(&quot;fill the bathtub with liquid quantity = %d \n&quot;, x);&#xD;
self->l = self->l + x;&#xD;
printf(&quot;new level = %d \n&quot;, self->l);</body>
</nestedClassifier>
<nestedClassifier xmi:type="uml:OpaqueBehavior" xmi:id="_Xw-7cH0SEeiDS63tULewcA" name="withdraw" specification="_vg57wG4cEeiQkc1FO4uxgA">
<language>C/C++</language>
<body>printf(&quot;remove the liquid quantity %d from the bathtub \n&quot;, x);&#xD;
self->l = self->l - x;&#xD;
printf(&quot;new level = %d \n&quot;, self->l);</body>
</nestedClassifier>
<nestedClassifier xmi:type="uml:OpaqueBehavior" xmi:id="_hbnPEH1REeiOvJbQeRuWmA" name="run" specification="_CtKkwH1REeiOvJbQeRuWmA">
<language>C/C++</language>
<body>self->activeStateID = Empty;&#xD;
self->l = 0;&#xD;
self->Lm = 100;&#xD;
Bathtub_fill(self, 50);&#xD;
Bathtub_withdraw(self, 10);&#xD;
Bathtub_fill(self, 30);&#xD;
Bathtub_withdraw(self, 70);</body>
</nestedClassifier>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_iYk4gH1PEeiOvJbQeRuWmA" name="Main"/>
<packagedElement xmi:type="uml:Dependency" xmi:id="_yYOMEH1PEeiOvJbQeRuWmA" client="_iYk4gH1PEeiOvJbQeRuWmA" supplier="_mdTNQG4cEeiQkc1FO4uxgA"/>
<profileApplication xmi:type="uml:ProfileApplication" xmi:id="_N2I-wH0ZEeiDS63tULewcA">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N2KM4H0ZEeiDS63tULewcA" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/C_Cpp/1#/"/>
</eAnnotations>
<appliedProfile xmi:type="uml:Profile" href="pathmap://PapyrusC_Cpp_PROFILES/C_Cpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
</profileApplication>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_EklfYH0PEeiDS63tULewcA" name="events">
<packagedElement xmi:type="uml:CallEvent" xmi:id="_GQC7oH0PEeiDS63tULewcA" name="fill" operation="_uaa00G4cEeiQkc1FO4uxgA"/>
<packagedElement xmi:type="uml:CallEvent" xmi:id="_HFFtQH0PEeiDS63tULewcA" name="remove" operation="_vg57wG4cEeiQkc1FO4uxgA"/>
</packagedElement>
<profileApplication xmi:type="uml:ProfileApplication" xmi:id="_ZlGrcG4fEeiQkc1FO4uxgA">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZlP1YG4fEeiQkc1FO4uxgA" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/C_Cpp/1#/"/>
</eAnnotations>
<appliedProfile xmi:type="uml:Profile" href="pathmap://PapyrusC_Cpp_PROFILES/C_Cpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
</profileApplication>
</uml:Model>
<C_Cpp:Include xmi:id="_udMg8H1PEeiOvJbQeRuWmA" body="#include &quot;Bathtub.h&quot;&#xD;&#xA;&#xD;&#xA;// Include from Include declaration (body)&#xD;&#xA;int main(void) {&#xD;&#xA;&#x9;Bathtub * myBathtub =Bathtub_create();&#xD;&#xA;&#x9;Bathtub_run (myBathtub);&#xD;&#xA;&#x9;return 1;&#xD;&#xA;}" base_class="_iYk4gH1PEeiOvJbQeRuWmA" base_Classifier="_iYk4gH1PEeiOvJbQeRuWmA"/>
</xmi:XMI>