source: trunk/modelicaml/org.openmodelica.modelicaml.gen.modelica/src/ModelicaML2Modelica_v04.mt @ 614

Last change on this file since 614 was 614, checked in by wschamai, 14 years ago
File size: 6.9 KB
Line 
1<%
2metamodel http://www.eclipse.org/uml2/3.0.0/UML
3
4import org.openmodelica.modelicaml.gen.modelica.uml2modelica.core._0_ main_uml2modelica
5import org.openmodelica.modelicaml.gen.modelica.uml2modelica.core._4_behavior_getter
6import org.openmodelica.modelicaml.gen.modelica.uml2modelica.services.UML2ModelicaServices
7import org.openmodelica.modelicaml.gen.modelica.uml2modelica.services.UmlServices
8
9import org.openmodelica.modelicaml.gen.modelica.additional.ModelicaML_additional
10import org.openmodelica.modelicaml.gen.modelica.annotation.ModelicaML_annotations
11
12import org.openmodelica.modelicaml.gen.modelica.statemachine2modelica.ModelicaML_StateMachine2Modelica_v04
13import org.openmodelica.modelicaml.gen.modelica.activity2modelica.ModelicaML_ActivityDiagram2Modelica
14
15import org.openmodelica.modelicaml.gen.modelica.services.ModelicaMLServices
16import org.openmodelica.modelicaml.gen.modelica.services.ModelicaMLMacros
17
18import org.openmodelica.modelicaml.gen.modelica.statemachine2modelica.ModelicaML_StateMachinesInstantiation_v04
19import 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!=""){%>
87algorithm
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"))){%>
108algorithm
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"))){%>
112equation
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"%>
125annotation(<%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){%>
134annotation(<%if (g_annotation != "" ){%><%g_annotation%>, <%}%><%ownedComment[hasStereotype(getProperty("s_annotation"))].body.sepStr(", ")%>)
135<%}else{%>annotation(<%g_annotation%>)
136<%}%>
137<%-- ############## Overriden: Annotation END --%>
138
139
Note: See TracBrowser for help on using the repository browser.