| <?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 <= self->Lm - self->l</body> |
| </specification> |
| </ownedRule> |
| <effect xmi:type="uml:OpaqueBehavior" xmi:id="_wyJmAH7XEei0bqkaoBEVJQ" name="msg"> |
| <language>C/C++</language> |
| <body>printf("New State is Filled \n");</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("New State is Empty \n");</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<self->Lm</body> |
| </specification> |
| </ownedRule> |
| <effect xmi:type="uml:OpaqueBehavior" xmi:id="_Nx2PgH7YEei0bqkaoBEVJQ" name="msg"> |
| <language>C/C++</language> |
| <body>printf("Remain in the same state Filled \n");</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("Remain in the same state Filled \n");</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("fill the bathtub with liquid quantity = %d \n", x);
 |
| self->l = self->l + x;
 |
| printf("new level = %d \n", self->l);</body> |
| </nestedClassifier> |
| <nestedClassifier xmi:type="uml:OpaqueBehavior" xmi:id="_Xw-7cH0SEeiDS63tULewcA" name="withdraw" specification="_vg57wG4cEeiQkc1FO4uxgA"> |
| <language>C/C++</language> |
| <body>printf("remove the liquid quantity %d from the bathtub \n", x);
 |
| self->l = self->l - x;
 |
| printf("new level = %d \n", self->l);</body> |
| </nestedClassifier> |
| <nestedClassifier xmi:type="uml:OpaqueBehavior" xmi:id="_hbnPEH1REeiOvJbQeRuWmA" name="run" specification="_CtKkwH1REeiOvJbQeRuWmA"> |
| <language>C/C++</language> |
| <body>self->activeStateID = Empty;
 |
| self->l = 0;
 |
| self->Lm = 100;
 |
| Bathtub_fill(self, 50);
 |
| Bathtub_withdraw(self, 10);
 |
| Bathtub_fill(self, 30);
 |
| 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 "Bathtub.h"

// Include from Include declaration (body)
int main(void) {
	Bathtub * myBathtub =Bathtub_create();
	Bathtub_run (myBathtub);
	return 1;
}" base_class="_iYk4gH1PEeiOvJbQeRuWmA" base_Classifier="_iYk4gH1PEeiOvJbQeRuWmA"/> |
| </xmi:XMI> |