1 | <% |
---|
2 | metamodel http://www.eclipse.org/uml2/3.0.0/UML |
---|
3 | |
---|
4 | import org.openmodelica.modelicaml.gen.modelica.uml2modelica.core._0_ main_uml2modelica |
---|
5 | import org.openmodelica.modelicaml.gen.modelica.uml2modelica.core._4_behavior_getter |
---|
6 | import org.openmodelica.modelicaml.gen.modelica.uml2modelica.services.UML2ModelicaServices |
---|
7 | import org.openmodelica.modelicaml.gen.modelica.uml2modelica.services.UmlServices |
---|
8 | |
---|
9 | import org.openmodelica.modelicaml.gen.modelica.additional.ModelicaML_additional |
---|
10 | import org.openmodelica.modelicaml.gen.modelica.annotation.ModelicaML_annotations |
---|
11 | |
---|
12 | import org.openmodelica.modelicaml.gen.modelica.statemachine2modelica.ModelicaML_StateMachine2Modelica_v04 |
---|
13 | import org.openmodelica.modelicaml.gen.modelica.activity2modelica.ModelicaML_ActivityDiagram2Modelica |
---|
14 | |
---|
15 | import org.openmodelica.modelicaml.gen.modelica.services.ModelicaMLServices |
---|
16 | import org.openmodelica.modelicaml.gen.modelica.services.ModelicaMLMacros |
---|
17 | |
---|
18 | import org.openmodelica.modelicaml.gen.modelica.statemachine2modelica.ModelicaML_StateMachinesInstantiation_v04 |
---|
19 | import org.openmodelica.modelicaml.gen.modelica.statemachine2modelica.ModelicaML_StateMachines_events |
---|
20 | |
---|
21 | %> |
---|
22 | |
---|
23 | |
---|
24 | <%-- ############################################################# --%> |
---|
25 | <%-- This templates imports the definitions from the org.openmodelica.modelicaml.uml2modelica.core |
---|
26 | and overrides some of them in order to include ModelicaML specific features. |
---|
27 | --%> |
---|
28 | <%-- ############################################################# --%> |
---|
29 | |
---|
30 | |
---|
31 | <%-- ############## Overriden: Behavior (equation and algorithm) --%> |
---|
32 | <%script type="uml.Classifier" name="equation" post="trim()"%><%-- overriden--%> |
---|
33 | <%equations_from_UML_OpaqueBehavior%><%-- NOTE: ModelicaML specific. --%> |
---|
34 | <%asserts%><%-- NOTE: ModelicaML specific, not supported by SysML4Modelica. --%> |
---|
35 | |
---|
36 | <%script type="uml.Classifier" name="equations_from_UML_OpaqueBehavior" post="trim()"%><%-- overriden--%> |
---|
37 | <%if (ownedElement.filter("OpaqueBehavior")[hasStereotype(getProperty("s_equation"))] != null){%> |
---|
38 | <%for (ownedElement.filter("OpaqueBehavior")[hasStereotype(getProperty("s_equation"))]){%> |
---|
39 | <%initial%>equation |
---|
40 | <%if (getStereotypeValue(getProperty("s_equation"), getProperty("s_p_loopKind")).name != ""){%> |
---|
41 | <%if (getStereotypeValue(getProperty("s_equation"), getProperty("s_p_loopKind")).name == "for"){%> |
---|
42 | <%if (getStereotypeValue(getProperty("s_equation"), getProperty("s_p_forIndices")) != ""){%> |
---|
43 | for <%getStereotypeValue(getProperty("s_equation"), getProperty("s_p_forIndices"))%> loop |
---|
44 | <%body.expandGENCodeMacros().indentTab()%> |
---|
45 | end for; |
---|
46 | <%}else{%> |
---|
47 | ERROR: No for-indices are defined for OpaqueBehavior <%qualifiedName%>. |
---|
48 | <%}%> |
---|
49 | <%}%> |
---|
50 | <%}else{%> |
---|
51 | <%body.expandGENCodeMacros().indentTab()%> |
---|
52 | <%}%> |
---|
53 | <%}%> |
---|
54 | <%}%> |
---|
55 | |
---|
56 | <%script type="uml.Classifier" name="algorithm" post="trim()"%><%-- overriden--%> |
---|
57 | <%if (ownedElement.filter("OpaqueBehavior")[hasStereotype(getProperty("s_algorithm"))] != null){%> |
---|
58 | <%for (ownedElement.filter("OpaqueBehavior")[hasStereotype(getProperty("s_algorithm"))]){%> |
---|
59 | <%initial%>algorithm |
---|
60 | <%if (getStereotypeValue(getProperty("s_algorithm"), getProperty("s_p_loopKind")).name != ""){%> |
---|
61 | <%if (getStereotypeValue(getProperty("s_algorithm"), getProperty("s_p_loopKind")).name == "for"){%> |
---|
62 | <%if (getStereotypeValue(getProperty("s_algorithm"), getProperty("s_p_forIndices")) != ""){%> |
---|
63 | for <%getStereotypeValue(getProperty("s_algorithm"), getProperty("s_p_forIndices"))%> loop |
---|
64 | <%body.expandGENCodeMacros().indentTab()%> |
---|
65 | end for; |
---|
66 | <%}else{%> |
---|
67 | ERROR: No for-indices are defined for OpaqueBehavior <%qualifiedName%>. |
---|
68 | <%}%> |
---|
69 | <%}else{%> |
---|
70 | <%if (getStereotypeValue(getProperty("s_algorithm"), getProperty("s_p_loopKind")).name == "while"){%> |
---|
71 | <%if (getStereotypeValue(getProperty("s_algorithm"), getProperty("s_p_whileExpression")) != ""){%> |
---|
72 | while <%getStereotypeValue(getProperty("s_algorithm"), getProperty("s_p_whileExpression"))%> loop |
---|
73 | <%body.expandGENCodeMacros().indentTab()%> |
---|
74 | end while; |
---|
75 | <%}else{%> |
---|
76 | ERROR: No while-expression is defined for OpaqueBehavior <%qualifiedName%>. |
---|
77 | <%}%> |
---|
78 | <%}%> |
---|
79 | <%}%> |
---|
80 | <%}else{%> |
---|
81 | <%body.expandGENCodeMacros().indentTab()%> |
---|
82 | <%}%> |
---|
83 | <%}%> |
---|
84 | <%}%> |
---|
85 | <%script type="uml.FunctionBehavior" name="algorithm" post="trim()"%> |
---|
86 | <%if (body!=""){%> |
---|
87 | algorithm |
---|
88 | <%body.indentTab()%><%}else{%><%}%> |
---|
89 | <%-- ############## Overriden: Behavior (equation and algorithm) END --%> |
---|
90 | |
---|
91 | |
---|
92 | |
---|
93 | <%-- ############## Overriden: Additional includes --%> |
---|
94 | <%script type="uml.Classifier" name="add_inc_structure" post="trim()"%><%-- overriden--%> |
---|
95 | <%ownedElement.filter("StateMachine")[submachineState == null && hasStereotype(getProperty("s_modelicaStateMachine"))].StateMachinesModelicaClass%> |
---|
96 | <%ownedElement.filter("StateMachine")[submachineState == null && hasStereotype(getProperty("s_modelicaStateMachine"))].StateMachineInstances%> |
---|
97 | <%changeEventsInstantiation.indentTab()%> |
---|
98 | <%absoluteTimeEventsInstantiation.indentTab()%> |
---|
99 | |
---|
100 | <%script type="uml.Classifier" name="add_inc_behavior" post="trim()"%><%-- overriden--%> |
---|
101 | <%if (ownedElement.filter("StateMachine")[submachineState == null && hasStereotype(getProperty("s_modelicaStateMachine"))] != null){%> |
---|
102 | <%changeEventsStatements%> |
---|
103 | <%absoluteTimeEventsTimeStatements%> |
---|
104 | |
---|
105 | <%ownedElement.filter("StateMachine").stateMachineBehaviorCode%> |
---|
106 | <%}%> |
---|
107 | <%if (ownedElement.filter("Activity")[hasStereotype(getProperty("s_conditionalAlgorithm"))] != null && !getStereotypeValue(getProperty("s_conditionalAlgorithm"), getProperty("s_p_isSubActivity"))){%> |
---|
108 | algorithm |
---|
109 | <%ownedElement.filter("Activity")[hasStereotype(getProperty("s_conditionalAlgorithm")) && !getStereotypeValue(getProperty("s_conditionalAlgorithm"), getProperty("s_p_isSubActivity"))].Activity2ModelicaCode%> |
---|
110 | <%}%> |
---|
111 | <%if (ownedElement.filter("Activity")[hasStereotype(getProperty("s_conditionalEquation"))] != null && !getStereotypeValue(getProperty("s_conditionalEquation"), getProperty("s_p_isSubActivity"))){%> |
---|
112 | equation |
---|
113 | <%ownedElement.filter("Activity")[hasStereotype(getProperty("s_conditionalEquation")) && !getStereotypeValue(getProperty("s_conditionalEquation"), getProperty("s_p_isSubActivity"))].Activity2ModelicaCode%> |
---|
114 | <%}%> |
---|
115 | |
---|
116 | <%script type="uml.NamedElement" name="add_inc_top_file"%><%-- overriden--%> |
---|
117 | //This code is generated from a ModelicaML model. |
---|
118 | <%--<%copyright%>--%> |
---|
119 | |
---|
120 | <%--<%script type="uml.Package" name="add_inc_validation" post="trim()"%>--%><%-- overriden--%> |
---|
121 | <%--<%validation%>--%> |
---|
122 | <%--<%script type="uml.Classifier" name="add_inc_validation" post="trim()"%>--%><%-- overriden--%> |
---|
123 | <%--<%validation%>--%> |
---|
124 | <%script type="uml.Package" name="add_inc_top_annotation"%> |
---|
125 | annotation(<%g_annotation%>); |
---|
126 | <%-- ############## Overriden: Additional includes END --%> |
---|
127 | |
---|
128 | |
---|
129 | |
---|
130 | |
---|
131 | <%-- ############## Overriden: Annotation --%> |
---|
132 | <%script type="uml.Class" name="annotation" post="trim()"%><%-- overriden--%> |
---|
133 | <%if (ownedComment[hasStereotype(getProperty("s_annotation"))] != null){%> |
---|
134 | annotation(<%if (g_annotation != "" ){%><%g_annotation%>, <%}%><%ownedComment[hasStereotype(getProperty("s_annotation"))].body.sepStr(", ")%>) |
---|
135 | <%}else{%>annotation(<%g_annotation%>) |
---|
136 | <%}%> |
---|
137 | <%-- ############## Overriden: Annotation END --%> |
---|
138 | |
---|
139 | |
---|