]> gerrit.simantics Code Review - simantics/sysdyn.git/commitdiff
A huge commit for Functions in equation tab (refs #4030) and expecially for Expressio...
authormiettinen <miettinen@ac1ea38d-2e2b-0410-8846-a27921b304fc>
Tue, 19 Feb 2013 14:25:17 +0000 (14:25 +0000)
committermiettinen <miettinen@ac1ea38d-2e2b-0410-8846-a27921b304fc>
Tue, 19 Feb 2013 14:25:17 +0000 (14:25 +0000)
* Function parameters are shown in the text feed assistant and printed to the expression when the function is selected or when a function is selected in ShortcutTabWidget.
* Added almost all Modelica functions under the model browser, that is, those which seem to work correctly or might be useful. All functions have their interface variables defined in the database as well. Updated also the definitions of the built-in functions.
* Added the interfaces of built-in Modelica functions to be shown similarly to the Modelica codes of all other function.
* Created another representation for a Modelica function in another Function.java: it is used to store and provide with the name, the type, and the parameterlist of a modelica function, and can easily be expanded to do more such stuff as well.
* Added fun icons for different types of functions to the ShortcutTabWidget and the text feed assistant.
* In parsing modelica (user defined) functions, the interface variables are recognized. They are not yet used, though.
* Size of the modelica code viewer (or modelica interface) of a function in user defined or built-in functions is limited to the minimum of 150 px; otherwise the long lines in the description make the code / interface viewer disappear.
* Added auto-generated doc of ModelicaParser.

git-svn-id: https://www.simantics.org/svn/simantics/sysdyn/trunk@26807 ac1ea38d-2e2b-0410-8846-a27921b304fc

25 files changed:
org.simantics.sysdyn.ontology/graph.tg
org.simantics.sysdyn.ontology/graph/ModelicaArrayFunctions.pgraph [new file with mode: 0644]
org.simantics.sysdyn.ontology/graph/ModelicaFunctions.pgraph [new file with mode: 0644]
org.simantics.sysdyn.ontology/graph/Sysdyn.pgraph
org.simantics.sysdyn.ontology/graph/SysdynFunctions.pgraph
org.simantics.sysdyn.ontology/graph/VensimFunctions.pgraph
org.simantics.sysdyn.ontology/src/org/simantics/sysdyn/SysdynResource.java
org.simantics.sysdyn.ui/icons/function.png [new file with mode: 0644]
org.simantics.sysdyn.ui/icons/functionLink.png [new file with mode: 0644]
org.simantics.sysdyn.ui/icons/modelicaArrayFunction.png [new file with mode: 0644]
org.simantics.sysdyn.ui/icons/modelicaFunction.png [new file with mode: 0644]
org.simantics.sysdyn.ui/icons/sysdynFunction.png [new file with mode: 0644]
org.simantics.sysdyn.ui/icons/variable.png [new file with mode: 0644]
org.simantics.sysdyn.ui/icons/variableGray.png [new file with mode: 0644]
org.simantics.sysdyn.ui/icons/vensimFunction.png [new file with mode: 0644]
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/preferences/ModelicaPreferencePage.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/properties/FunctionTab.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/properties/widgets/ShortcutTabWidget.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/properties/widgets/expressions/CompletionProcessor.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/properties/widgets/expressions/Function.java [new file with mode: 0644]
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/properties/widgets/functions/FunctionCodeWidget.java
org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/utils/ExpressionUtils.java
org.simantics.sysdyn/ModelicaParser.html [new file with mode: 0644]
org.simantics.sysdyn/src/org/simantics/sysdyn/manager/FunctionUtils.java
org.simantics.sysdyn/src/org/simantics/sysdyn/modelParser/ModelicaParser.jj

index 23edcbc93fd46d21bb47526dead9b529070c6767..138c666ddf7ebd40296ee66842597ac8e4c07a96 100644 (file)
Binary files a/org.simantics.sysdyn.ontology/graph.tg and b/org.simantics.sysdyn.ontology/graph.tg differ
diff --git a/org.simantics.sysdyn.ontology/graph/ModelicaArrayFunctions.pgraph b/org.simantics.sysdyn.ontology/graph/ModelicaArrayFunctions.pgraph
new file mode 100644 (file)
index 0000000..aefaea0
--- /dev/null
@@ -0,0 +1,489 @@
+L0 = <http://www.simantics.org/Layer0-1.1>\r
+SYSDYN = <http://www.simantics.org/Sysdyn-1.1>\r
+\r
+MAF = <http://www.simantics.org/Sysdyn-1.1/Built-in Functions/Modelica Array Functions> : SYSDYN.SysdynModelicaFunctionLibrary\r
+\r
+\r
+\r
+MAF.scalar : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """scalar(A)\r
+\r
+Returns a one-element array as scalar.\r
+\r
+Returns the single element of array A. size(A,i) = 1 is required for 1 <= i <= ndims(A)."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.scalar.A : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.scalar.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+\r
+\r
+\r
+MAF.vector : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """vector(A)\r
+\r
+Returns an array with one non-singleton dimension as vector.\r
+\r
+Returns a 1-vector, if A is a scalar and otherwise returns a vector containing all the elements of the array, provided there is at most one dimension size > 1.\r
+\r
+Examples:\r
+Real A[1,2,1] = {{{3},{4}}};\r
+Real v[2] = vector(A);  // = {3,4}"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.vector.A : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.vector.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    \r
+    \r
+    \r
+MAF.matrix : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """matrix(A)\r
+\r
+Returns the first two dimensions of an array as matrix.\r
+\r
+Returns promote(A,2), if A is a scalar or vector and otherwise returns the elements of the first two dimensions as a matrix. size(A,i) = 1 is required for 2 < i <= ndims(A).\r
+Function promote(A,n) fills dimensions of size 1 from the right to array A upto dimension n, where "n > ndims(A)" is required. Let C = promote(A,n), with nA = ndims(A), then\r
+ndims(C) = n,\r
+size(C,j) = size(A,j) for 1 <= j <= nA,\r
+size(C,j) = 1 for nA+1 <= j <= n,\r
+C[i_1, ..., i_nA, 1, ..., 1] = A[i_1, ..., i_nA]."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.matrix.A : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.matrix.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    \r
+    \r
+    \r
+MAF.ndims : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """ndims(A)\r
+\r
+Return number of array dimensions.\r
+\r
+Returns the number of dimensions k of array expression A, with k >= 0."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.ndims.A : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.ndims.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Integer"\r
+    \r
+    \r
+    \r
+MAF.size : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """size(A,i)\r
+size(A)\r
+\r
+Returns dimensions of an array.\r
+\r
+The first form returns the size of dimension i of array expression A where i shall be > 0 and <= ndims(A).\r
+\r
+The second form returns a vector of length ndims(A) containing the dimension sizes of A.\r
+\r
+Examples:\r
+Real A[8,4,5];\r
+Integer n3   = size(A,3);  // = 5\r
+Integer n[:] = size(A);    // = {8,4,5}"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.size.A : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MAF.size.i : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional true\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.size.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    \r
+    \r
+    \r
+MAF.array : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """array(A,B,C,...)\r
+\r
+The constructor function array(A,B,C,...) constructs an array from its arguments.\r
+\r
+The constructor function array(A,B,C,...) constructs an array from its arguments according to the following rules:\r
+  * Size matching: All arguments must have the same sizes, i.e., size(A)=size(B)=size(C)=...\r
+  * All arguments must be type compatible expressions giving the type of the elements. The data type of the result array is the maximally expanded type of the arguments. Real and Integer subtypes can be mixed resulting in a Real result array where the Integer numbers have been transformed to Real numbers.\r
+  * Each application of this constructor function adds a one-sized dimension to the left in the result compared to the dimensions of the argument arrays, i.e., ndims(array(A,B,C)) = ndims(A) + 1 = ndims(B) + 1, ...\r
+  * {A, B, C, ...} is a shorthand notation for array(A, B, C, ...).\r
+  * There must be at least one argument [i.e., array() or {} are not defined]."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.array.A : SYSDYN.SysdynModelicaFunction.VariableLengthInput\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+                SYSDYN.SysdynModelicaFunction.VariableLengthInput.shownLabels _ : L0.List\r
+                    @L0.list\r
+                        MAF.array.A.A : L0.String\r
+                        MAF.array.A.B : L0.String\r
+                        MAF.array.A.C : L0.String\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.array.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    \r
+    \r
+    \r
+MAF.cat : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """cat(k,A,B,C,...)\r
+\r
+The function cat(k,A,B,C,...)concatenates arrays A,B,C,... along dimension k.\r
+\r
+The function cat(k,A,B,C,...)concatenates arrays A,B,C,... along dimension k according to the following rules:\r
+  * Arrays A, B, C, ... must have the same number of dimensions, i.e., ndims(A) = ndims(B) = ...\r
+  * Arrays A, B, C, ... must be type compatible expressions giving the type of the elements of the result. The maximally expanded types should be equivalent. Real and Integer subtypes can be mixed resulting in a Real result array where the Integer numbers have been transformed to Real numbers.\r
+  * k has to characterize an existing dimension, i.e., 1 <= k <= ndims(A) = ndims(B) = ndims(C); k shall be an integer number.\r
+  * Size matching: Arrays A, B, C, ... must have identical array sizes with the exception of the size of dimension k, i.e., size(A,j) = size(B,j), for 1 <= j <= ndims(A) and j <> k.\r
+    \r
+Examples:\r
+Real[2,3] r1 = cat(1, {{1.0, 2.0, 3}}, {{4, 5, 6}});\r
+Real[2,6] r2 = cat(2, r1, 2*r1);"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.cat.k : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MAF.cat.A : SYSDYN.SysdynModelicaFunction.VariableLengthInput\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+                SYSDYN.SysdynModelicaFunction.VariableLengthInput.shownLabels _ : L0.List\r
+                    @L0.list\r
+                        MAF.cat.A.A : L0.String\r
+                        MAF.cat.A.B : L0.String\r
+                        MAF.cat.A.C : L0.String\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.cat.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+\r
+\r
+    \r
+MAF.zeros : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """zeros(n1, n2, n3, ...)\r
+\r
+Returns a zero array.\r
+\r
+Returns the n1 x n2 x n3 x ... Integer array with all elements equal to zero (ni >= 0)."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.zeros.n : SYSDYN.SysdynModelicaFunction.VariableLengthInput\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+                SYSDYN.SysdynModelicaFunction.VariableLengthInput.shownLabels _ : L0.List\r
+                    @L0.list\r
+                        MAF.zeros.n.n1 : L0.String\r
+                        MAF.zeros.n.n2 : L0.String\r
+                        MAF.zeros.n.n3 : L0.String\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.zeros.o : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Integer"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Integer n annotation(__OpenModelica_varArgs = true);\r
+    output Integer o[:];"""\r
+    \r
+    \r
+    \r
+MAF.ones : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """ones(n1, n2, n3, ...)\r
+\r
+Returns an array with "1" elements.\r
+\r
+Return the n1 x n2 x n3 x ... Integer array with all elements equal to one (ni >=0 )."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.ones.n : SYSDYN.SysdynModelicaFunction.VariableLengthInput\r
+                SYSDYN.Variable.type "Integer"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+                SYSDYN.SysdynModelicaFunction.VariableLengthInput.shownLabels _ : L0.List\r
+                    @L0.list\r
+                        MAF.ones.n.n1 : L0.String\r
+                        MAF.ones.n.n2 : L0.String\r
+                        MAF.ones.n.n3 : L0.String\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.ones.o : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Integer"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Integer n annotation(__OpenModelica_varArgs = true);\r
+    output Integer o[:];"""\r
+    \r
+    \r
+    \r
+MAF.fill : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """fill(s, n1, n2, n3, ...)\r
+\r
+Return a Real, Integer, Boolean or String array with all elements equal\r
+\r
+Returns the n1 x n2 x n3 x ... array with all elements equal to scalar or array expression s (ni >= 0). The returned array has the same type as s. Recursive definition:\r
+fill(s,n1,n2,n3, ...) = fill(fill(s,n2,n3, ...), n1);\r
+fill(s,n) = {s,s,..., s}\r
+\r
+Examples:\r
+Real    mr[2,2] = fill(-1,2,2);  // = [-1,-1;-1,-1]\r
+Boolean vb[3]   = fill(true,3);  // = {true, true, true}"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.fill.s : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MAF.fill.n : SYSDYN.SysdynModelicaFunction.VariableLengthInput\r
+                SYSDYN.Variable.type "Integer"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+                SYSDYN.SysdynModelicaFunction.VariableLengthInput.shownLabels _ : L0.List\r
+                    @L0.list\r
+                        MAF.fill.n.n1 : L0.String\r
+                        MAF.fill.n.n2 : L0.String\r
+                        MAF.fill.n.n3 : L0.String\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.fill.o : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input OpenModelica.Internal.BuiltinType s;\r
+    input Integer n annotation(__OpenModelica_varArgs = true);\r
+    output OpenModelica.Internal.BuiltinType o[:];"""\r
+    \r
+    \r
+    \r
+MAF.identity : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """identity(n)\r
+\r
+Returns the identity matrix of the desired size.\r
+\r
+Returns the n x n Integer identity matrix, with ones on the diagonal and zeros at the other places."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.identity.n : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Integer "\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.identity.outArray : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Integer "\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Integer n;\r
+    output Integer[n,n] outArray;"""\r
+    \r
+    \r
+    \r
+MAF.diagonal : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """diagonal(v)\r
+\r
+Returns a diagonal matrix.\r
+\r
+Returns a square matrix with the elements of vector v on the diagonal and all other elements zero."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.diagonal.v : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.diagonal.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    \r
+    \r
+    \r
+MAF.linspace : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """linspace(x1, x2, n)\r
+\r
+Return Real vector with equally spaced elements.\r
+\r
+Returns a Real vector with n equally spaced elements, such that\r
+v[i] = x1 + (x2-x1)*(i-1)/(n-1) for 1 <= i <= n.\r
+It is required that n >= 2. The arguments x1 and x2 shall be Real or Integer scalar expressions.\r
+\r
+Example:\r
+Real v[:] = linspace(1,7,4);  // = {1, 3, 5, 7}"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.linspace.x1 : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MAF.linspace.x2 : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MAF.linspace.n : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Integer"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.linspace.v : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real x1 "start";\r
+    input Real x2 "end";\r
+    input Integer n "number";\r
+    output Real v[n];"""\r
+    \r
+    \r
+    \r
+MAF.min : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """min(A)\r
+\r
+Returns the smallest element.\r
+\r
+Returns the smallest element of array expression A."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.min.A : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.min.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    \r
+    \r
+    \r
+MAF.max : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """max(A)\r
+\r
+Returns the largest element.\r
+\r
+Returns the largest element of array expression A."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.max.A : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.max.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    \r
+    \r
+    \r
+MAF.sum : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """sum(A)\r
+sum(e(i, ..., j) for i in u, ..., j in v)\r
+\r
+Returns the scalar sum.\r
+\r
+The first form returns the scalar sum of all the elements of array expression A:\r
+A[1,...,1]+A[2,...,1]+....+A[end,...,1]+A[end,...,end]\r
+\r
+The second form is a reduction expression and returns the sum of the expression e(i, ..., j) evaluated for all combinations of i in u, ..., j in v:\r
+e(u[1],...,v[1]) + e(u[2],...,v[1]) + ... +\r
+e(u[end],...,v[1]) + ... + e(u[end],...,v[end])\r
+The type of sum(e(i, ..., j) for i in u, ..., j in v) is the same as the type of e(i,...j).\r
+\r
+Example:\r
+sum(i for i in 1:10)  // Gives  1+2+...+10=55\r
+    // Read it as: compute the sum of i for i in the range 1 to 10."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.sum.A : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.sum.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    \r
+    \r
+    \r
+MAF.product : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """product(A)\r
+product(e(i, ..., j) for i in u, ..., j in v)\r
+\r
+Returns the scalar product\r
+\r
+The first form returns the scalar product of all the elements of array expression A:\r
+A[1,...,1]*A[2,...,1]*....*A[end,...,1]*A[end,...,end]\r
+\r
+The second form is a reduction expression and returns the product of the expression e(i, ..., j) evaluated for all combinations of i in u, ..., j in v:\r
+e(u[1],...,v[1]) * e(u[2],...,v[1]) * ... *\r
+e(u[end],...,v[1]) * ... * e(u[end],...,v[end])\r
+The type of product(e(i, ..., j) for i in u, ..., j in v) is the same as the type of e(i,...j).\r
+\r
+Example:\r
+{product(j for j in 1:i) for i in 0:4} // = {1,1,2,6,24}"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.product.A : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.product.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    \r
+    \r
+    \r
+MAF.transpose : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """transpose(A)\r
+\r
+Transpose of a matrix or permutation of the first two dimensions of an array\r
+\r
+Permutes the first two dimensions of array A. It is an error, if array A does not have at least 2 dimensions."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.transpose.A : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.transpose.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    \r
+    \r
+    \r
+MAF.cross : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """cross(x,y)\r
+\r
+Return cross product of two vectors.\r
+\r
+Returns the 3-vector cross product of the 3-vectors x and y.\r
+cross(x,y) = vector( [ x[2]*y[3]-x[3]*y[2];\r
+                   x[3]*y[1]-x[1]*y[3];\r
+                   x[1]*y[2]-x[2]*y[1] ] );"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.cross.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MAF.cross.y : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.cross.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    \r
+    \r
+    \r
+MAF.skew : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """skew(x)\r
+\r
+Returns the skew matrix that is associated with a vector\r
+\r
+Returns the 3 x 3 skew symmetric matrix associated with a 3-vector, i.e.,\r
+cross(x,y) = skew(x)*y;\r
+skew(x) = [ 0   , -x[3],  x[2];\r
+           x[3],  0   , -x[1];\r
+           -x[2],  x[1],  0   ];"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MAF.skew.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MAF.skew.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
diff --git a/org.simantics.sysdyn.ontology/graph/ModelicaFunctions.pgraph b/org.simantics.sysdyn.ontology/graph/ModelicaFunctions.pgraph
new file mode 100644 (file)
index 0000000..21e2f7d
--- /dev/null
@@ -0,0 +1,726 @@
+L0 = <http://www.simantics.org/Layer0-1.1>\r
+SYSDYN = <http://www.simantics.org/Sysdyn-1.1>\r
+\r
+MF = <http://www.simantics.org/Sysdyn-1.1/Built-in Functions/Modelica Functions> : SYSDYN.SysdynModelicaFunctionLibrary\r
+\r
+\r
+\r
+MF.abs : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """abs(v)\r
+\r
+Absolute value.\r
+\r
+Returns the absolute value of v. Is expanded into "(if v >= 0 then v else -v)" (into "noEvent(if v >= 0 then v else -v)", to be precise). Argument v needs to be an Integer or Real expression."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.abs.v : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.abs.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    \r
+    \r
+    \r
+MF.acos : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """acos(u)\r
+\r
+Inverse cosine.\r
+\r
+Returns the inverse of cos of u, with -1 <= u <= +1. Argument u needs to be an Integer or Real expression."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.acos.u : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.acos.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real u;\r
+    output Real y;"""\r
+\r
+\r
+\r
+MF.asin : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """asin(u)\r
+\r
+Inverse sine.\r
+\r
+Returns the inverse of sin of u, with -1 <= u <= +1. Argument u needs to be an Integer or Real expression."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.asin.u : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.asin.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real u;\r
+    output Real y;"""\r
+\r
+\r
+\r
+MF.atan : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """atan(u)\r
+\r
+Inverse tangent.\r
+\r
+Returns the inverse of tan of u, with -INF < u < INF. Argument u needs to be an Integer or Real expression."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.atan.u : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.atan.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real u;\r
+    output Real y;"""\r
+        \r
+        \r
+        \r
+MF.atan2 : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """atan2(u1,u2)\r
+\r
+Four quadrant inverse tangent.\r
+\r
+Returns y = atan2(u1,u2) such that tan(y) = u1/u2 and y is in the range -pi < y <= pi. u2 may be zero, provided u1 is not zero. Usually u1, u2 is provided in such a form that u1 = sin(y) and u2 = cos(y). Arguments u1 and u2 need to be Integer or Real expressions."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.atan2.u1 : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MF.atan2.u2 : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.atan2.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real u1;\r
+    input Real u2;\r
+    output Real z;"""\r
+        \r
+        \r
+        \r
+MF.ceil : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """ceil(x)\r
+\r
+Round a Real number towards plus infinity\r
+\r
+Returns the smallest integer not less than x (i.e. the closest integer above x)."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.ceil.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.ceil.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real x;\r
+    output Real y;"""\r
+        \r
+        \r
+        \r
+MF.cos : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """cos(u)\r
+\r
+Cosine.\r
+\r
+Returns the cosine of u, with -INF < u < INF Argument u needs to be an Integer or Real expression."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.ceil.u : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.ceil.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real u;\r
+    output Real y;"""\r
+        \r
+        \r
+        \r
+MF.cosh : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """cosh(u)\r
+\r
+Hyperbolic cosine.\r
+\r
+Returns the cosh of u, with -INF < u < INF. Argument u needs to be an Integer or Real expression."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.cosh.u : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.cosh.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real u;\r
+    output Real y;"""\r
+        \r
+        \r
+        \r
+MF.delay : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """delay(expr, delayTime, delayMax)\r
+delay(expr, delayTime)\r
+\r
+Returns the value of expr at the time time-delayTime. The value of expr is returned when time <= time.start + delayTime.\r
+\r
+Returns "expr(time - delayTime)" for time > time.start + delayTime and "expr(time.start)" for time <= time.start + delayTime. The arguments, i.e., expr, delayTime and delayMax, need to be subtypes of Real. delayMax needs to be additionally a parameter expression. The following relation shall hold: 0 <= delayTime <= delayMax, otherwise an error occurs. If delayMax is not supplied in the argument list, delayTime need to be a parameter expression."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.delay.expr : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MF.delay.delayTime : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MF.delay.delayMax : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional true\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.delay.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+        \r
+        \r
+        \r
+MF.der : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """der(expr)\r
+\r
+Time derivative of expr. expr must be have continuous-time variability.\r
+\r
+The time derivative of expression expr. If the expression expr is a scalar it needs to be a subtype of Real. The expression and all its subexpressions must be differentiable. If expr is an array, the operator is applied to all elements of the array. For Real parameters and constants the result is a zero scalar or array of the same size as the variable.\r
+\r
+Example:\r
+  Real x, xdot1, xdot2;\r
+equation\r
+  xdot1 = der(x);\r
+  xdot2 = der(x*sin(x));"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.der.expr : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.der.dexpr : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """  input Real expr(unit = "'p");\r
+  output Real dexpr(unit = "'p/s");"""\r
+        \r
+        \r
+        \r
+MF.div : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """div(x, y)\r
+\r
+Integer part of division of two Real numbers.\r
+\r
+Returns the algebraic quotient x/y with any fractional part discarted (also known as truncation toward zero). E.g. div(10,3) = 3."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.div.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MF.div.y : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.div.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+        \r
+        \r
+        \r
+MF.edge : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """edge(b)\r
+\r
+Indicate rising edge\r
+\r
+Returns true when the value of the boolean expression b changes. Expanded into (b and not pre(b))."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.edge.b : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Boolean"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.edge.edgeEvent : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Boolean"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Boolean b;\r
+    output Boolean edgeEvent;"""\r
+        \r
+        \r
+        \r
+MF.exp : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """exp(u)\r
+\r
+Exponential, base e.\r
+\r
+Returns the base e exponential of u, with -INF < u < INF Argument u needs to be an Integer or Real expression."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.exp.u : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.exp.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real u(unit = "1");\r
+    output Real y(unit = "1");"""\r
+        \r
+        \r
+        \r
+MF.floor : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """floor(x)\r
+\r
+Round Real number towards minus infinity\r
+\r
+Returns the largest integer not greater than x (i.e. the closest integer below x)."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.floor.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.floor.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real x;\r
+    output Real y;"""\r
+        \r
+        \r
+        \r
+MF.initial : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """initial()\r
+\r
+True during initialization.\r
+\r
+Returns true during the initialization phase and false otherwise."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.initial.isInitial : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Boolean"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    output Boolean isInitial;"""\r
+\r
+\r
+\r
+MF.log : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """log(u)\r
+\r
+Natural (base e) logarithm.\r
+\r
+Returns the base e logarithm of u, with u > 0. Argument u needs to be an Integer or Real expression."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.log.u : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.log.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real u(unit = "1");\r
+    output Real y(unit = "1");"""\r
+        \r
+        \r
+        \r
+MF.log10 : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """log10(u)\r
+\r
+Base 10 logarithm. (u > 0)\r
+\r
+Returns the base 10 logarithm of u, with u > 0. Argument u needs to be an Integer or Real expression."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.log10.u : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.log10.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real u(unit = "1");\r
+    output Real y(unit = "1");"""\r
+        \r
+        \r
+        \r
+MF.max : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """max(x,y)\r
+max(e(i, ..., j) for i in u, ..., j in v)\r
+\r
+Returns the largest element.\r
+\r
+The first form returns the largest element of the scalars x and y.\r
+\r
+The second form is a reduction expression and returns the largest value of the scalar expression e(i, ..., j) evaluated for all combinations of i in u, ..., j in v\r
+\r
+Example:\r
+max(i^2 for i in {3,7,6})  // = 49"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.max.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MF.max.y : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.max.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+        \r
+        \r
+        \r
+MF.min : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """min(x,y)\r
+min(e(i, ..., j) for i in u, ..., j in v)\r
+\r
+Returns the smallest element.\r
+\r
+The first form returns the smallest element of the scalars x and y.\r
+\r
+The second form is a reduction expression and returns the smallest value of the scalar expression e(i, ..., j) evaluated for all combinations of i in u, ..., j in v\r
+    \r
+Example:\r
+min(i^2 for i in {3,7,6})  // = 9"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.min.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MF.min.y : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.min.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+        \r
+        \r
+        \r
+MF.mod : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """mod(x, y)\r
+\r
+Integer modulus of a division of two Real numbers.\r
+\r
+Returns the integer modulus of x/y: mod(x,y) = x - floor(x/y) * y."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.mod.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MF.mod.y : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.mod.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+        \r
+        \r
+        \r
+MF.noEvent : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """noEvent(expr)\r
+\r
+Turn off event triggering.\r
+\r
+noEvent around an expression causes the expression to NOT generate event.\r
+Important:\r
+If you want a condition to be checked only on time steps, use noEvent.\r
+(e.g. if noEvent(value >= 1) then ... else ...)"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.noEvent.expr : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.noEvent.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+        \r
+        \r
+        \r
+MF.pre : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """pre(y)\r
+\r
+Returns the preceding value of y from time event that has occured before current time.\r
+\r
+Returns the "left limit" y(tpre) of variable y(t) at a time instant t. At an event instant, y(tpre) is the value of y after the last event iteration at time instant t. The pre operator can be applied if the following three conditions are fulfilled simultaneously:\r
+  * variable y is a subtype of a simple type\r
+  * y is a discrete-time expression\r
+  * the operator is not applied in a function class\r
+The first value of pre(y) is determined in the initialization phase.\r
+A new event is triggered if at least for one variable v "pre(v) <> v" after the active model equations are evaluated at an event instant. In this case the model is at once reevaluated. This evaluation sequence is called "event iteration". The integration is restarted, if for all v used in pre-operators the following condition holds: "pre(v) == v"."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.pre.y : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.pre.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+        \r
+MF.rem : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """rem(x, y)\r
+\r
+Integer remainder of the division of two Real numbers.\r
+\r
+Returns the integer remainder of x/y: rem(x,y) = x - div(x,y) * y."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.rem.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MF.rem.y : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.rem.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+        \r
+        \r
+        \r
+MF.sample : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """sample(start, interval)\r
+\r
+Trigger time events.\r
+\r
+Returns true and triggers time events at times start + i * interval (i=0,1,...)."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.sample.start : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MF.sample.interval : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.sample.isSample : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Boolean"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    parameter input Real start(fixed = false);\r
+    parameter input Real interval(fixed = false);\r
+    output Boolean isSample;"""\r
+        \r
+        \r
+        \r
+MF.semiLinear : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """semiLinear(x, positiveSlope, negativeSlope)\r
+\r
+Returns "if x >= 0 then positiveSlope*x else negativeSlope*x" and handle x=0 in a meaningful way.\r
+\r
+Returns "if x >= 0 then positiveSlope*x else negativeSlope*x". In some situations, equations with the semiLinear function become underdetermined if the first argument (x) becomes zero, i.e., there are an infinite number of solutions. It is recommended that the following rules are used to transform the equations during the translation phase in order to select one meaningful solution in such cases:\r
+                \r
+Rule 1: The equations\r
+y = semiLinear(x, sa, s1);\r
+y = semiLinear(x, s1, s2);\r
+y = semiLinear(x, s2, s3);\r
+   ...\r
+y = semiLinear(x, sN, sb);\r
+may be replaced by\r
+s1 = if x >= 0 then sa else sb\r
+s2 = s1;\r
+s3 = s2;\r
+   ...\r
+sN = sN-1;\r
+y = semiLinear(x, sa, sb);\r
+\r
+Rule 2: The equations\r
+x = 0;\r
+y = 0;\r
+y = semiLinear(x, sa, sb);\r
+may be replaced by\r
+x = 0\r
+y = 0;\r
+sa = sb;"""    \r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.semiLinear.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MF.semiLinear.positiveSlope : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MF.semiLinear.negativeSlope : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.semiLinear.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real x;\r
+    input Real positiveSlope;\r
+    input Real negativeSlope;\r
+    output Real result;"""\r
+\r
+\r
+\r
+MF.sign : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """sign(v)\r
+\r
+Sign function of a Real or Integer number.\r
+\r
+Returns -1 if v is negative, 1 if v is positive. Expanded into "(if v > 0 then 1 else if v < 0 then -1 else 0)"."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.sign.v : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.sign.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Integer"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real v;\r
+    output Integer result;"""\r
+        \r
+        \r
+        \r
+MF.sin : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """sin(u)\r
+\r
+Sine.\r
+\r
+Returns the sine of u, with -INF < u < INF. Argument u needs to be an Integer or Real expression."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.sin.u : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.sin.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real x;\r
+    output Real y;"""\r
+        \r
+        \r
+        \r
+MF.sinh : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """sinh(u)\r
+\r
+Hyperbolic sine.\r
+\r
+Returns the sinh of u, with -INF < u < INF. Argument u needs to be an Integer or Real expression."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.sinh.u : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.sinh.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real x;\r
+    output Real y;"""\r
+        \r
+        \r
+        \r
+MF.smooth : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """smooth(p, expr)\r
+\r
+Indicate smoothness of expression.\r
+\r
+If p>=0 smooth(p, expr) returns expr and states that expr is p times continuously differentiable, i.e.: expr is continuous in all real variables appearing in the expression and all partial derivatives with respect to all appearing real variables exist and are continuous up to order p.\r
+The only allowed types for expr in smooth are: real expressions, arrays of allowed expressions, and records containing only components of allowed expressions."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.smooth.p : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            MF.smooth.expr : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.smooth.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+        \r
+        \r
+        \r
+MF.sqrt : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """sqrt(v)\r
+\r
+Square root.\r
+\r
+Square root of v. The value of v must be greater or equal to 0 or an assertion error occurs."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.sqrt.v : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.sqrt.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real v(unit = "'p");\r
+    output Real y(unit = "'p(1/2)");"""\r
+        \r
+        \r
+        \r
+MF.tan : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """tan(u)\r
+\r
+Tangent.\r
+\r
+Returns the tangent of u, with -INF < u < INF (if u is a multiple of (2n-1)*pi/2, y = tan(u) is +/- infinity). Argument u needs to be an Integer or Real expression."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.tan.u : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.tan.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real u;\r
+    output Real y;"""\r
+        \r
+        \r
+        \r
+MF.tanh : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """tanh(u)\r
+\r
+Hyperbolic tangent.\r
+\r
+Returns the tanh of u, with -INF < u < INF. Argument u needs to be an Integer or Real expression."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            MF.tanh.u : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.tanh.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    input Real x;\r
+    output Real y;"""\r
+        \r
+        \r
+        \r
+MF.terminal : SYSDYN.SysdynModelicaFunction\r
+    L0.HasDescription """terminal()\r
+\r
+True after successful analysis\r
+\r
+Returns true at the end of a successful simulation."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            MF.terminal.isTerminal : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Boolean"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface """    output Boolean isTerminal;"""\r
+        
\ No newline at end of file
index 11bd59fe85c9b5cddf1e134497167849231e98db..12ada0e598be05c576f23f747889044207b4a776 100644 (file)
@@ -293,7 +293,10 @@ SYSDYN.Redeclaration <T L0.Entity
 SYSDYN.SysdynModelicaFunction <T L0.Entity
     @L0.singleProperty L0.HasName
     >-- SYSDYN.SysdynModelicaFunction.modelicaFunctionCode --> L0.String <R L0.HasProperty : L0.TotalFunction
-       
+    >-- SYSDYN.SysdynModelicaFunction.modelicaFunctionInterface --> L0.String <R L0.HasProperty : L0.TotalFunction
+    >-- SYSDYN.SysdynModelicaFunction.inputs --> L0.List <R L0.IsComposedOf : L0.FunctionalRelation
+    >-- SYSDYN.SysdynModelicaFunction.outputs --> L0.List <R L0.IsComposedOf : L0.FunctionalRelation
+
 SYSDYN.ExternalFunctionFile <T L0.Entity
     @L0.singleProperty L0.HasName
     >-- SYSDYN.ExternalFunctionFile.externalFile --> L0.ByteArray <R L0.HasProperty
@@ -301,6 +304,18 @@ SYSDYN.ExternalFunctionFile <T L0.Entity
 SYSDYN.SysdynModelicaFunctionLibrary <T L0.Library  
     @L0.singleProperty L0.HasName  
         
+SYSDYN.SysdynModelicaFunction.InterfaceVariable <T L0.Entity
+    @L0.singleProperty L0.HasName
+    >-- SYSDYN.SysdynModelicaFunction.definition --> L0.String <R L0.HasProperty
+
+SYSDYN.SysdynModelicaFunction.Input <T SYSDYN.SysdynModelicaFunction.InterfaceVariable
+    >-- SYSDYN.SysdynModelicaFunction.optional --> L0.Boolean <R L0.HasProperty : L0.FunctionalRelation
+
+SYSDYN.SysdynModelicaFunction.VariableLengthInput <T SYSDYN.SysdynModelicaFunction.Input
+    >-- SYSDYN.SysdynModelicaFunction.VariableLengthInput.shownLabels --> L0.List <R L0.IsComposedOf
+    
+SYSDYN.SysdynModelicaFunction.Output <T SYSDYN.SysdynModelicaFunction.InterfaceVariable
+    
 //#####################################################################
 // Experiments
 //#####################################################################
index 1acfea63ea158b5e68dec35d1c8a75491803040c..c4542a9f2c237327a0d8743aeb763e64f1c17c4f 100644 (file)
@@ -3,8 +3,27 @@ SYSDYN = <http://www.simantics.org/Sysdyn-1.1>
 \r
 FL = <http://www.simantics.org/Sysdyn-1.1/Built-in Functions> : SYSDYN.SysdynModelicaFunctionLibrary\r
 \r
+\r
+\r
 FL.minmax : SYSDYN.SysdynModelicaFunction\r
-    L0.HasDescription "Limits the result of an equation to between the given minimum and maximum values."\r
+    L0.HasDescription """minmax(expression, minimum, maximum)\r
+\r
+Limits the result of an equation to between the given minimum and maximum values."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            FL.minmax.expression : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            FL.minmax.minimum : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            FL.minmax.maximum : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            FL.minmax.result : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real expression;\r
     input Real minimum;\r
     input Real maximum;\r
@@ -13,29 +32,82 @@ algorithm
     result := min(maximum, max(minimum, expression));"""\r
 \r
 \r
+\r
 FL.xidz : SYSDYN.SysdynModelicaFunction\r
-    L0.HasDescription "X if divided by zero"\r
-    SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real a;\r
-       input Real b;\r
-       input Real x;\r
-       output Real z;\r
+    L0.HasDescription """xidz(divident, divisor, x)\r
+\r
+x if divided by zero, divident/divisor otherwise"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            FL.xidz.divident : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            FL.xidz.divisor : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            FL.xidz.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+                SYSDYN.SysdynModelicaFunction.definition "Result if divisor = 0"\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            FL.xidz.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real divident;\r
+    input Real divisor;\r
+    input Real x;\r
+    output Real z;\r
 algorithm\r
-       if b > 0.0 or b < 0.0 then\r
-           z := a / b;\r
-       else\r
-           z := x;\r
-       end if;"""\r
+    if divisor > 0.0 or divisor < 0.0 then\r
+        z := divident / divisor;\r
+    else\r
+        z := x;\r
+    end if;"""\r
+\r
+\r
 \r
 FL.zidz : SYSDYN.SysdynModelicaFunction\r
-    L0.HasDescription "Zero if divided by zero"\r
-    SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real a;\r
-    input Real b;\r
+    L0.HasDescription "zidz(divident, divisor)\r
+\r
+Zero if divided by zero, divident/divisor otherwise"\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            FL.zidz.divident : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            FL.zidz.divisor : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            FL.zidz.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
+    SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real divident;\r
+    input Real divisor;\r
     output Real z;\r
 algorithm\r
-    z := xidz(a,b,0.0);"""\r
+    z := xidz(divident,divisor,0.0);"""\r
+\r
+\r
 \r
 FL.interpolate : SYSDYN.SysdynModelicaFunction\r
-    L0.HasDescription "Interpolate function for two-dimensional table"\r
+    L0.HasDescription """interpolate(u, table)\r
+\r
+Interpolate function for two-dimensional table"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            FL.interpolate.u : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+                SYSDYN.SysdynModelicaFunction.definition "input value (first column of table)"\r
+            FL.interpolate.table : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+                SYSDYN.SysdynModelicaFunction.definition "table to be interpolated"\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            FL.interpolate.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real u "input value (first column of table)";\r
     input Real table[:, :] "table to be interpolated";\r
     output Real y "interpolated input value (icol column of table)";\r
@@ -43,8 +115,29 @@ algorithm
     y := interpolateFull(u, table, 2);"""\r
     \r
     \r
+    \r
 FL.interpolateFull : SYSDYN.SysdynModelicaFunction\r
-    L0.HasDescription "The full interpolate function"\r
+    L0.HasDescription """interpolateFull(u, table, icol)\r
+\r
+The full interpolate function"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            FL.interpolateFull.u : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+                SYSDYN.SysdynModelicaFunction.definition "input value (first column of table)"\r
+            FL.interpolateFull.table : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+                SYSDYN.SysdynModelicaFunction.definition "table to be interpolated"\r
+            FL.interpolateFull.icol : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Integer"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+                SYSDYN.SysdynModelicaFunction.definition "column of table to be interpolated"\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            FL.interpolateFull.y : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real u "input value (first column of table)";\r
     input Real table[:, :] "table to be interpolated";\r
     input Integer icol "column of table to be interpolated";\r
index 3e097bc5000e1f803d72bcae82ef2c44093d8093..f40dfc05a91cd2b77002b95d7f62f69f261f6ae5 100644 (file)
@@ -20,9 +20,27 @@ algorithm
     z := if time < parameterDTime then init else delay(inputVar, parameterDTime);"""\r
 */\r
     \r
+    \r
+    \r
 VF.IFTHENELSE : SYSDYN.SysdynModelicaFunction\r
-    L0.HasDescription """IF THEN ELSE( cond , ontrue , onfalse )\r
-    -> if cond then ontrue else onfalse"""\r
+    L0.HasDescription """IFTHENELSE( cond , ontrue , onfalse )\r
+\r
+Returns ontrue if cond, otherwise onfalse"""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.IFTHENELSE.cond : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            VF.IFTHENELSE.ontrue : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            VF.IFTHENELSE.onfalse : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.IFTHENELSE.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Boolean cond;\r
     input Real ontrue;\r
     input Real onfalse;\r
@@ -30,27 +48,75 @@ VF.IFTHENELSE : SYSDYN.SysdynModelicaFunction
 algorithm\r
     z := if cond then ontrue else onfalse;"""    \r
     \r
+    \r
+    \r
 VF.MAX : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """MAX(a, b) \r
-    Returns the larger of a and b."""\r
+\r
+Returns the larger of a and b."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.MAX.a : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            VF.MAX.b : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.MAX.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real a;\r
     input Real b;\r
     output Real z;\r
 algorithm\r
     z := if a > b then a else b;"""       \r
     \r
+    \r
+    \r
 VF.MIN : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """MIN(a, b) \r
-    Returns the smaller of a and b."""\r
+\r
+Returns the smaller of a and b."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.MIN.a : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            VF.MIN.b : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.MIN.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real a;\r
     input Real b;\r
     output Real z;\r
 algorithm\r
     z := if a < b then a else b;"""        \r
     \r
+    \r
+    \r
 VF.XIDZ : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """XIDZ(a, b, x)\r
-    x if divided by zero, a/b otherwise."""\r
+\r
+x if divided by zero, a/b otherwise."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.XIDZ.a : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            VF.XIDZ.b : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            VF.XIDZ.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.XIDZ.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real a;\r
     input Real b;\r
     input Real x;\r
@@ -58,43 +124,112 @@ VF.XIDZ : SYSDYN.SysdynModelicaFunction
 algorithm\r
     z := xidz(a, b, x);"""     \r
     \r
+    \r
+    \r
 VF.ZIDZ : SYSDYN.SysdynModelicaFunction\r
-    L0.HasDescription """XIDZ(a, b)\r
-    Zero if divided by zero, a/b otherwise."""\r
+    L0.HasDescription """ZIDZ(a, b)\r
+\r
+Zero if divided by zero, a/b otherwise."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.ZIDZ.a : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            VF.ZIDZ.b : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.ZIDZ.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real a;\r
     input Real b;\r
     output Real z;\r
 algorithm\r
     z := zidz(a, b);"""       \r
     \r
+    \r
+    \r
 VF.ABS : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """ABS(x)\r
-    Returns the absolute value of x."""\r
+\r
+Returns the absolute value of x."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.ABS.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.ABS.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real x;\r
     output Real z;\r
 algorithm\r
     z := abs(x);"""      \r
     \r
+    \r
+    \r
 VF.SQRT : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """SQRT(x)\r
-    Returns the square root of x."""\r
+\r
+Returns the square root of x."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.SQRT.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.SQRT.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real x;\r
     output Real z;\r
 algorithm\r
     z := sqrt(x);"""   \r
         \r
+        \r
+        \r
 VF.MODULO : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """MODULO(a, b)\r
-    Returns the remainder when a is divided by b. """\r
+\r
+Returns the remainder when a is divided by b. """\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.MODULO.a : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            VF.MODULO.b : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.MODULO.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real a;\r
     input Real b;\r
     output Real z;\r
 algorithm\r
     z := mod(a, b);"""       \r
     \r
+    \r
+    \r
 VF.PULSE : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """PULSE(start, width)\r
-    Returns 1.0 starting at time start and lasting for interval width. 0.0 is returned at other times."""\r
+\r
+Returns 1.0 starting at time start and lasting for interval width. 0.0 is returned at other times."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.PULSE.start : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            VF.PULSE.width : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.PULSE.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real start;\r
     input Real width;\r
     input Real t = time;\r
@@ -102,9 +237,27 @@ VF.PULSE : SYSDYN.SysdynModelicaFunction
 algorithm\r
     z := if t >= start and (t - start) <= width then 1.0 else 0.0;"""    \r
     \r
+    \r
+    \r
 VF.RAMP : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """RAMP(slope, startTime, endTime) \r
-    Returns 0 until the start time and then slopes upward until end time and then holds constant."""\r
+\r
+Returns 0 until the start time and then slopes upward until end time and then holds constant."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.RAMP.slope : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            VF.RAMP.startTime : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            VF.RAMP.endTime : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.RAMP.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real slope;\r
     input Real startTime;\r
     input Real endTime;\r
@@ -120,9 +273,24 @@ algorithm
     else\r
         0;"""        \r
     \r
+    \r
+    \r
 VF.STEP : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """STEP(height, stepTime)\r
-    Returns 0.0 until the step time and then returns height."""\r
+\r
+Returns 0.0 until the step time and then returns height."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.STEP.height : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+            VF.STEP.stepTime : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.STEP.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real height;\r
     input Real stepTime;\r
     input Real t = time;\r
@@ -130,68 +298,165 @@ VF.STEP : SYSDYN.SysdynModelicaFunction
 algorithm\r
     z := if t >= stepTime then height else 0.0;""" \r
     \r
+    \r
+    \r
 /* Continuous built-in common mathematical functions */\r
 \r
 VF.EXP : SYSDYN.SysdynModelicaFunction\r
-    L0.HasDescription """\r
-    """\r
+    L0.HasDescription """EXP(x)\r
+\r
+Exponential, base e."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.EXP.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.EXP.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real x;\r
     output Real z;\r
 algorithm\r
     z := exp(x);"""\r
     \r
+    \r
+    \r
 VF.SIN : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """SIN(x)\r
-    Returns the sine of x."""\r
+\r
+Returns the sine of x."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.SIN.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.SIN.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real x;\r
     output Real z;\r
 algorithm\r
     z := sin(x);"""  \r
+          \r
+          \r
             \r
 VF.SINH : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """SINH(x)\r
-    Returns the hyperbolic sine of x."""\r
+\r
+Returns the hyperbolic sine of x."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.SINH.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.SINH.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real x;\r
     output Real z;\r
 algorithm\r
     z := sinh(x);"""  \r
 \r
+\r
+\r
 VF.COS : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """COS(x)\r
-    Returns the cosine of x."""\r
+\r
+Returns the cosine of x."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.COS.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.COS.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real x;\r
     output Real z;\r
 algorithm\r
     z := cos(x);"""  \r
     \r
+    \r
+    \r
 VF.COSH : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """COSH(x)\r
-    Returns the hyperbolic cosine of x."""\r
+\r
+Returns the hyperbolic cosine of x."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.COSH.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.COSH.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real x;\r
     output Real z;\r
 algorithm\r
     z := cosh(x);"""  \r
     \r
+    \r
+    \r
 VF.TAN : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """TAN(x)\r
-    Returns the tangent of x."""\r
+\r
+Returns the tangent of x."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.TAN.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.TAN.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real x;\r
     output Real z;\r
 algorithm\r
     z := tan(x);"""  \r
     \r
+    \r
+    \r
 VF.TANH : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """TANH(x)\r
-    Returns the hyperbolic tangent of x."""\r
+\r
+Returns the hyperbolic tangent of x."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.TANH.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.TANH.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real x;\r
     output Real z;\r
 algorithm\r
     z := tanh(x);"""  \r
     \r
+    \r
+    \r
 VF.LN : SYSDYN.SysdynModelicaFunction\r
     L0.HasDescription """LN(x)\r
-    Returns the natural logarithm of x. \r
-    In modelica log(x) is the natural logarighm and log10(x) is base 10 logarighm."""\r
+\r
+Returns the natural logarithm of x. \r
+\r
+In modelica log(x) is the natural logarighm and log10(x) is base 10 logarighm."""\r
+    SYSDYN.SysdynModelicaFunction.inputs _ : L0.List\r
+        @L0.list\r
+            VF.LN.x : SYSDYN.SysdynModelicaFunction.Input\r
+                SYSDYN.Variable.type "Real"\r
+                SYSDYN.SysdynModelicaFunction.optional false\r
+    SYSDYN.SysdynModelicaFunction.outputs _ : L0.List\r
+        @L0.list\r
+            VF.LN.z : SYSDYN.SysdynModelicaFunction.Output\r
+                SYSDYN.Variable.type "Real"\r
     SYSDYN.SysdynModelicaFunction.modelicaFunctionCode """    input Real x;\r
     output Real z;\r
 algorithm\r
index e4487707b147cc62619dba00b5ed65f065d2b55f..3b6a342fa02f0ed331c36369faae1eb8a752666b 100644 (file)
@@ -22,31 +22,290 @@ public class SysdynResource {
     public final Resource Bottom;\r
     public final Resource Browser;\r
     public final Resource Built$in_Functions;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_array;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_array_A;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_array_A_A;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_array_A_B;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_array_A_C;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_array_result;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_cat;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_cat_A;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_cat_A_A;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_cat_A_B;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_cat_A_C;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_cat_k;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_cat_result;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_cross;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_cross_result;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_cross_x;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_cross_y;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_diagonal;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_diagonal_result;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_diagonal_v;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_fill;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_fill_n;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_fill_n_n1;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_fill_n_n2;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_fill_n_n3;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_fill_o;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_fill_s;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_identity;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_identity_n;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_identity_outArray;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_linspace;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_linspace_n;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_linspace_v;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_linspace_x1;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_linspace_x2;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_matrix;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_matrix_A;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_matrix_result;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_max;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_max_A;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_max_result;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_min;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_min_A;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_min_result;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_ndims;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_ndims_A;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_ndims_result;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_ones;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_ones_n;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_ones_n_n1;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_ones_n_n2;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_ones_n_n3;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_ones_o;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_product;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_product_A;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_product_result;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_scalar;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_scalar_A;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_scalar_result;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_size;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_size_A;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_size_i;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_size_result;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_skew;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_skew_result;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_skew_x;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_sum;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_sum_A;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_sum_result;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_transpose;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_transpose_A;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_transpose_result;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_vector;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_vector_A;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_vector_result;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_zeros;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_zeros_n;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_zeros_n_n1;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_zeros_n_n2;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_zeros_n_n3;\r
+    public final Resource Built$in_Functions_Modelica_Array_Functions_zeros_o;\r
+    public final Resource Built$in_Functions_Modelica_Functions;\r
+    public final Resource Built$in_Functions_Modelica_Functions_abs;\r
+    public final Resource Built$in_Functions_Modelica_Functions_abs_result;\r
+    public final Resource Built$in_Functions_Modelica_Functions_abs_v;\r
+    public final Resource Built$in_Functions_Modelica_Functions_acos;\r
+    public final Resource Built$in_Functions_Modelica_Functions_acos_u;\r
+    public final Resource Built$in_Functions_Modelica_Functions_acos_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_asin;\r
+    public final Resource Built$in_Functions_Modelica_Functions_asin_u;\r
+    public final Resource Built$in_Functions_Modelica_Functions_asin_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_atan;\r
+    public final Resource Built$in_Functions_Modelica_Functions_atan2;\r
+    public final Resource Built$in_Functions_Modelica_Functions_atan2_u1;\r
+    public final Resource Built$in_Functions_Modelica_Functions_atan2_u2;\r
+    public final Resource Built$in_Functions_Modelica_Functions_atan2_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_atan_u;\r
+    public final Resource Built$in_Functions_Modelica_Functions_atan_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_ceil;\r
+    public final Resource Built$in_Functions_Modelica_Functions_ceil_u;\r
+    public final Resource Built$in_Functions_Modelica_Functions_ceil_x;\r
+    public final Resource Built$in_Functions_Modelica_Functions_ceil_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_cos;\r
+    public final Resource Built$in_Functions_Modelica_Functions_cosh;\r
+    public final Resource Built$in_Functions_Modelica_Functions_cosh_u;\r
+    public final Resource Built$in_Functions_Modelica_Functions_cosh_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_delay;\r
+    public final Resource Built$in_Functions_Modelica_Functions_delay_delayMax;\r
+    public final Resource Built$in_Functions_Modelica_Functions_delay_delayTime;\r
+    public final Resource Built$in_Functions_Modelica_Functions_delay_expr;\r
+    public final Resource Built$in_Functions_Modelica_Functions_delay_result;\r
+    public final Resource Built$in_Functions_Modelica_Functions_der;\r
+    public final Resource Built$in_Functions_Modelica_Functions_der_dexpr;\r
+    public final Resource Built$in_Functions_Modelica_Functions_der_expr;\r
+    public final Resource Built$in_Functions_Modelica_Functions_div;\r
+    public final Resource Built$in_Functions_Modelica_Functions_div_result;\r
+    public final Resource Built$in_Functions_Modelica_Functions_div_x;\r
+    public final Resource Built$in_Functions_Modelica_Functions_div_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_edge;\r
+    public final Resource Built$in_Functions_Modelica_Functions_edge_b;\r
+    public final Resource Built$in_Functions_Modelica_Functions_edge_edgeEvent;\r
+    public final Resource Built$in_Functions_Modelica_Functions_exp;\r
+    public final Resource Built$in_Functions_Modelica_Functions_exp_u;\r
+    public final Resource Built$in_Functions_Modelica_Functions_exp_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_floor;\r
+    public final Resource Built$in_Functions_Modelica_Functions_floor_x;\r
+    public final Resource Built$in_Functions_Modelica_Functions_floor_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_initial;\r
+    public final Resource Built$in_Functions_Modelica_Functions_initial_isInitial;\r
+    public final Resource Built$in_Functions_Modelica_Functions_log;\r
+    public final Resource Built$in_Functions_Modelica_Functions_log10;\r
+    public final Resource Built$in_Functions_Modelica_Functions_log10_u;\r
+    public final Resource Built$in_Functions_Modelica_Functions_log10_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_log_u;\r
+    public final Resource Built$in_Functions_Modelica_Functions_log_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_max;\r
+    public final Resource Built$in_Functions_Modelica_Functions_max_result;\r
+    public final Resource Built$in_Functions_Modelica_Functions_max_x;\r
+    public final Resource Built$in_Functions_Modelica_Functions_max_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_min;\r
+    public final Resource Built$in_Functions_Modelica_Functions_min_result;\r
+    public final Resource Built$in_Functions_Modelica_Functions_min_x;\r
+    public final Resource Built$in_Functions_Modelica_Functions_min_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_mod;\r
+    public final Resource Built$in_Functions_Modelica_Functions_mod_result;\r
+    public final Resource Built$in_Functions_Modelica_Functions_mod_x;\r
+    public final Resource Built$in_Functions_Modelica_Functions_mod_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_noEvent;\r
+    public final Resource Built$in_Functions_Modelica_Functions_noEvent_expr;\r
+    public final Resource Built$in_Functions_Modelica_Functions_noEvent_result;\r
+    public final Resource Built$in_Functions_Modelica_Functions_pre;\r
+    public final Resource Built$in_Functions_Modelica_Functions_pre_result;\r
+    public final Resource Built$in_Functions_Modelica_Functions_pre_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_rem;\r
+    public final Resource Built$in_Functions_Modelica_Functions_rem_result;\r
+    public final Resource Built$in_Functions_Modelica_Functions_rem_x;\r
+    public final Resource Built$in_Functions_Modelica_Functions_rem_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sample;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sample_interval;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sample_isSample;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sample_start;\r
+    public final Resource Built$in_Functions_Modelica_Functions_semiLinear;\r
+    public final Resource Built$in_Functions_Modelica_Functions_semiLinear_negativeSlope;\r
+    public final Resource Built$in_Functions_Modelica_Functions_semiLinear_positiveSlope;\r
+    public final Resource Built$in_Functions_Modelica_Functions_semiLinear_result;\r
+    public final Resource Built$in_Functions_Modelica_Functions_semiLinear_x;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sign;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sign_result;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sign_v;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sin;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sin_u;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sin_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sinh;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sinh_u;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sinh_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_smooth;\r
+    public final Resource Built$in_Functions_Modelica_Functions_smooth_expr;\r
+    public final Resource Built$in_Functions_Modelica_Functions_smooth_p;\r
+    public final Resource Built$in_Functions_Modelica_Functions_smooth_result;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sqrt;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sqrt_v;\r
+    public final Resource Built$in_Functions_Modelica_Functions_sqrt_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_tan;\r
+    public final Resource Built$in_Functions_Modelica_Functions_tan_u;\r
+    public final Resource Built$in_Functions_Modelica_Functions_tan_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_tanh;\r
+    public final Resource Built$in_Functions_Modelica_Functions_tanh_u;\r
+    public final Resource Built$in_Functions_Modelica_Functions_tanh_y;\r
+    public final Resource Built$in_Functions_Modelica_Functions_terminal;\r
+    public final Resource Built$in_Functions_Modelica_Functions_terminal_isTerminal;\r
     public final Resource Built$in_Functions_Vensim_Functions;\r
     public final Resource Built$in_Functions_Vensim_Functions_ABS;\r
+    public final Resource Built$in_Functions_Vensim_Functions_ABS_x;\r
+    public final Resource Built$in_Functions_Vensim_Functions_ABS_z;\r
     public final Resource Built$in_Functions_Vensim_Functions_COS;\r
     public final Resource Built$in_Functions_Vensim_Functions_COSH;\r
+    public final Resource Built$in_Functions_Vensim_Functions_COSH_x;\r
+    public final Resource Built$in_Functions_Vensim_Functions_COSH_z;\r
+    public final Resource Built$in_Functions_Vensim_Functions_COS_x;\r
+    public final Resource Built$in_Functions_Vensim_Functions_COS_z;\r
     public final Resource Built$in_Functions_Vensim_Functions_EXP;\r
+    public final Resource Built$in_Functions_Vensim_Functions_EXP_x;\r
+    public final Resource Built$in_Functions_Vensim_Functions_EXP_z;\r
     public final Resource Built$in_Functions_Vensim_Functions_IFTHENELSE;\r
+    public final Resource Built$in_Functions_Vensim_Functions_IFTHENELSE_cond;\r
+    public final Resource Built$in_Functions_Vensim_Functions_IFTHENELSE_onfalse;\r
+    public final Resource Built$in_Functions_Vensim_Functions_IFTHENELSE_ontrue;\r
+    public final Resource Built$in_Functions_Vensim_Functions_IFTHENELSE_z;\r
     public final Resource Built$in_Functions_Vensim_Functions_LN;\r
+    public final Resource Built$in_Functions_Vensim_Functions_LN_x;\r
+    public final Resource Built$in_Functions_Vensim_Functions_LN_z;\r
     public final Resource Built$in_Functions_Vensim_Functions_MAX;\r
+    public final Resource Built$in_Functions_Vensim_Functions_MAX_a;\r
+    public final Resource Built$in_Functions_Vensim_Functions_MAX_b;\r
+    public final Resource Built$in_Functions_Vensim_Functions_MAX_z;\r
     public final Resource Built$in_Functions_Vensim_Functions_MIN;\r
+    public final Resource Built$in_Functions_Vensim_Functions_MIN_a;\r
+    public final Resource Built$in_Functions_Vensim_Functions_MIN_b;\r
+    public final Resource Built$in_Functions_Vensim_Functions_MIN_z;\r
     public final Resource Built$in_Functions_Vensim_Functions_MODULO;\r
+    public final Resource Built$in_Functions_Vensim_Functions_MODULO_a;\r
+    public final Resource Built$in_Functions_Vensim_Functions_MODULO_b;\r
+    public final Resource Built$in_Functions_Vensim_Functions_MODULO_z;\r
     public final Resource Built$in_Functions_Vensim_Functions_PULSE;\r
+    public final Resource Built$in_Functions_Vensim_Functions_PULSE_start;\r
+    public final Resource Built$in_Functions_Vensim_Functions_PULSE_width;\r
+    public final Resource Built$in_Functions_Vensim_Functions_PULSE_z;\r
     public final Resource Built$in_Functions_Vensim_Functions_RAMP;\r
+    public final Resource Built$in_Functions_Vensim_Functions_RAMP_endTime;\r
+    public final Resource Built$in_Functions_Vensim_Functions_RAMP_slope;\r
+    public final Resource Built$in_Functions_Vensim_Functions_RAMP_startTime;\r
+    public final Resource Built$in_Functions_Vensim_Functions_RAMP_z;\r
     public final Resource Built$in_Functions_Vensim_Functions_SIN;\r
     public final Resource Built$in_Functions_Vensim_Functions_SINH;\r
+    public final Resource Built$in_Functions_Vensim_Functions_SINH_x;\r
+    public final Resource Built$in_Functions_Vensim_Functions_SINH_z;\r
+    public final Resource Built$in_Functions_Vensim_Functions_SIN_x;\r
+    public final Resource Built$in_Functions_Vensim_Functions_SIN_z;\r
     public final Resource Built$in_Functions_Vensim_Functions_SQRT;\r
+    public final Resource Built$in_Functions_Vensim_Functions_SQRT_x;\r
+    public final Resource Built$in_Functions_Vensim_Functions_SQRT_z;\r
     public final Resource Built$in_Functions_Vensim_Functions_STEP;\r
+    public final Resource Built$in_Functions_Vensim_Functions_STEP_height;\r
+    public final Resource Built$in_Functions_Vensim_Functions_STEP_stepTime;\r
+    public final Resource Built$in_Functions_Vensim_Functions_STEP_z;\r
     public final Resource Built$in_Functions_Vensim_Functions_TAN;\r
     public final Resource Built$in_Functions_Vensim_Functions_TANH;\r
+    public final Resource Built$in_Functions_Vensim_Functions_TANH_x;\r
+    public final Resource Built$in_Functions_Vensim_Functions_TANH_z;\r
+    public final Resource Built$in_Functions_Vensim_Functions_TAN_x;\r
+    public final Resource Built$in_Functions_Vensim_Functions_TAN_z;\r
     public final Resource Built$in_Functions_Vensim_Functions_XIDZ;\r
+    public final Resource Built$in_Functions_Vensim_Functions_XIDZ_a;\r
+    public final Resource Built$in_Functions_Vensim_Functions_XIDZ_b;\r
+    public final Resource Built$in_Functions_Vensim_Functions_XIDZ_x;\r
+    public final Resource Built$in_Functions_Vensim_Functions_XIDZ_z;\r
     public final Resource Built$in_Functions_Vensim_Functions_ZIDZ;\r
+    public final Resource Built$in_Functions_Vensim_Functions_ZIDZ_a;\r
+    public final Resource Built$in_Functions_Vensim_Functions_ZIDZ_b;\r
+    public final Resource Built$in_Functions_Vensim_Functions_ZIDZ_z;\r
     public final Resource Built$in_Functions_interpolate;\r
     public final Resource Built$in_Functions_interpolateFull;\r
+    public final Resource Built$in_Functions_interpolateFull_icol;\r
+    public final Resource Built$in_Functions_interpolateFull_table;\r
+    public final Resource Built$in_Functions_interpolateFull_u;\r
+    public final Resource Built$in_Functions_interpolateFull_y;\r
+    public final Resource Built$in_Functions_interpolate_table;\r
+    public final Resource Built$in_Functions_interpolate_u;\r
+    public final Resource Built$in_Functions_interpolate_y;\r
     public final Resource Built$in_Functions_minmax;\r
+    public final Resource Built$in_Functions_minmax_expression;\r
+    public final Resource Built$in_Functions_minmax_maximum;\r
+    public final Resource Built$in_Functions_minmax_minimum;\r
+    public final Resource Built$in_Functions_minmax_result;\r
     public final Resource Built$in_Functions_xidz;\r
+    public final Resource Built$in_Functions_xidz_divident;\r
+    public final Resource Built$in_Functions_xidz_divisor;\r
+    public final Resource Built$in_Functions_xidz_x;\r
+    public final Resource Built$in_Functions_xidz_z;\r
     public final Resource Built$in_Functions_zidz;\r
+    public final Resource Built$in_Functions_zidz_divident;\r
+    public final Resource Built$in_Functions_zidz_divisor;\r
+    public final Resource Built$in_Functions_zidz_z;\r
     public final Resource Center;\r
     public final Resource Cloud;\r
     public final Resource CloudSymbol;\r
@@ -281,8 +540,24 @@ public class SysdynResource {
     public final Resource SysdynModel_variableFilter_Inverse;\r
     public final Resource SysdynModelicaFunction;\r
     public final Resource SysdynModelicaFunctionLibrary;\r
+    public final Resource SysdynModelicaFunction_Input;\r
+    public final Resource SysdynModelicaFunction_InterfaceVariable;\r
+    public final Resource SysdynModelicaFunction_Output;\r
+    public final Resource SysdynModelicaFunction_VariableLengthInput;\r
+    public final Resource SysdynModelicaFunction_VariableLengthInput_shownLabels;\r
+    public final Resource SysdynModelicaFunction_VariableLengthInput_shownLabels_Inverse;\r
+    public final Resource SysdynModelicaFunction_definition;\r
+    public final Resource SysdynModelicaFunction_definition_Inverse;\r
+    public final Resource SysdynModelicaFunction_inputs;\r
+    public final Resource SysdynModelicaFunction_inputs_Inverse;\r
     public final Resource SysdynModelicaFunction_modelicaFunctionCode;\r
     public final Resource SysdynModelicaFunction_modelicaFunctionCode_Inverse;\r
+    public final Resource SysdynModelicaFunction_modelicaFunctionInterface;\r
+    public final Resource SysdynModelicaFunction_modelicaFunctionInterface_Inverse;\r
+    public final Resource SysdynModelicaFunction_optional;\r
+    public final Resource SysdynModelicaFunction_optional_Inverse;\r
+    public final Resource SysdynModelicaFunction_outputs;\r
+    public final Resource SysdynModelicaFunction_outputs_Inverse;\r
     public final Resource SysdynModuleLibrary;\r
     public final Resource SysdynOperationBrowser;\r
     public final Resource SysdynTerminal;\r
@@ -394,31 +669,290 @@ public class SysdynResource {
         public static final String Bottom = "http://www.simantics.org/Sysdyn-1.1/Bottom";\r
         public static final String Browser = "http://www.simantics.org/Sysdyn-1.1/Browser";\r
         public static final String Built$in_Functions = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_array = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/array";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_array_A = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/array/A";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_array_A_A = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/array/A/A";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_array_A_B = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/array/A/B";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_array_A_C = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/array/A/C";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_array_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/array/result";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_cat = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/cat";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_cat_A = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/cat/A";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_cat_A_A = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/cat/A/A";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_cat_A_B = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/cat/A/B";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_cat_A_C = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/cat/A/C";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_cat_k = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/cat/k";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_cat_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/cat/result";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_cross = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/cross";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_cross_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/cross/result";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_cross_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/cross/x";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_cross_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/cross/y";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_diagonal = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/diagonal";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_diagonal_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/diagonal/result";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_diagonal_v = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/diagonal/v";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_fill = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/fill";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_fill_n = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/fill/n";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_fill_n_n1 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/fill/n/n1";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_fill_n_n2 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/fill/n/n2";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_fill_n_n3 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/fill/n/n3";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_fill_o = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/fill/o";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_fill_s = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/fill/s";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_identity = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/identity";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_identity_n = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/identity/n";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_identity_outArray = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/identity/outArray";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_linspace = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/linspace";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_linspace_n = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/linspace/n";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_linspace_v = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/linspace/v";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_linspace_x1 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/linspace/x1";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_linspace_x2 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/linspace/x2";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_matrix = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/matrix";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_matrix_A = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/matrix/A";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_matrix_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/matrix/result";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_max = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/max";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_max_A = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/max/A";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_max_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/max/result";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_min = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/min";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_min_A = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/min/A";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_min_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/min/result";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_ndims = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/ndims";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_ndims_A = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/ndims/A";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_ndims_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/ndims/result";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_ones = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/ones";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_ones_n = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/ones/n";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_ones_n_n1 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/ones/n/n1";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_ones_n_n2 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/ones/n/n2";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_ones_n_n3 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/ones/n/n3";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_ones_o = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/ones/o";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_product = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/product";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_product_A = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/product/A";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_product_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/product/result";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_scalar = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/scalar";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_scalar_A = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/scalar/A";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_scalar_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/scalar/result";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_size = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/size";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_size_A = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/size/A";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_size_i = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/size/i";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_size_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/size/result";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_skew = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/skew";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_skew_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/skew/result";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_skew_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/skew/x";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_sum = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/sum";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_sum_A = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/sum/A";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_sum_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/sum/result";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_transpose = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/transpose";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_transpose_A = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/transpose/A";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_transpose_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/transpose/result";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_vector = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/vector";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_vector_A = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/vector/A";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_vector_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/vector/result";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_zeros = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/zeros";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_zeros_n = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/zeros/n";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_zeros_n_n1 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/zeros/n/n1";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_zeros_n_n2 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/zeros/n/n2";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_zeros_n_n3 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/zeros/n/n3";\r
+        public static final String Built$in_Functions_Modelica_Array_Functions_zeros_o = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Array%20Functions/zeros/o";\r
+        public static final String Built$in_Functions_Modelica_Functions = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions";\r
+        public static final String Built$in_Functions_Modelica_Functions_abs = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/abs";\r
+        public static final String Built$in_Functions_Modelica_Functions_abs_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/abs/result";\r
+        public static final String Built$in_Functions_Modelica_Functions_abs_v = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/abs/v";\r
+        public static final String Built$in_Functions_Modelica_Functions_acos = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/acos";\r
+        public static final String Built$in_Functions_Modelica_Functions_acos_u = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/acos/u";\r
+        public static final String Built$in_Functions_Modelica_Functions_acos_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/acos/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_asin = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/asin";\r
+        public static final String Built$in_Functions_Modelica_Functions_asin_u = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/asin/u";\r
+        public static final String Built$in_Functions_Modelica_Functions_asin_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/asin/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_atan = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/atan";\r
+        public static final String Built$in_Functions_Modelica_Functions_atan2 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/atan2";\r
+        public static final String Built$in_Functions_Modelica_Functions_atan2_u1 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/atan2/u1";\r
+        public static final String Built$in_Functions_Modelica_Functions_atan2_u2 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/atan2/u2";\r
+        public static final String Built$in_Functions_Modelica_Functions_atan2_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/atan2/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_atan_u = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/atan/u";\r
+        public static final String Built$in_Functions_Modelica_Functions_atan_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/atan/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_ceil = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/ceil";\r
+        public static final String Built$in_Functions_Modelica_Functions_ceil_u = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/ceil/u";\r
+        public static final String Built$in_Functions_Modelica_Functions_ceil_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/ceil/x";\r
+        public static final String Built$in_Functions_Modelica_Functions_ceil_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/ceil/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_cos = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/cos";\r
+        public static final String Built$in_Functions_Modelica_Functions_cosh = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/cosh";\r
+        public static final String Built$in_Functions_Modelica_Functions_cosh_u = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/cosh/u";\r
+        public static final String Built$in_Functions_Modelica_Functions_cosh_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/cosh/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_delay = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/delay";\r
+        public static final String Built$in_Functions_Modelica_Functions_delay_delayMax = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/delay/delayMax";\r
+        public static final String Built$in_Functions_Modelica_Functions_delay_delayTime = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/delay/delayTime";\r
+        public static final String Built$in_Functions_Modelica_Functions_delay_expr = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/delay/expr";\r
+        public static final String Built$in_Functions_Modelica_Functions_delay_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/delay/result";\r
+        public static final String Built$in_Functions_Modelica_Functions_der = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/der";\r
+        public static final String Built$in_Functions_Modelica_Functions_der_dexpr = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/der/dexpr";\r
+        public static final String Built$in_Functions_Modelica_Functions_der_expr = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/der/expr";\r
+        public static final String Built$in_Functions_Modelica_Functions_div = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/div";\r
+        public static final String Built$in_Functions_Modelica_Functions_div_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/div/result";\r
+        public static final String Built$in_Functions_Modelica_Functions_div_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/div/x";\r
+        public static final String Built$in_Functions_Modelica_Functions_div_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/div/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_edge = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/edge";\r
+        public static final String Built$in_Functions_Modelica_Functions_edge_b = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/edge/b";\r
+        public static final String Built$in_Functions_Modelica_Functions_edge_edgeEvent = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/edge/edgeEvent";\r
+        public static final String Built$in_Functions_Modelica_Functions_exp = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/exp";\r
+        public static final String Built$in_Functions_Modelica_Functions_exp_u = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/exp/u";\r
+        public static final String Built$in_Functions_Modelica_Functions_exp_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/exp/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_floor = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/floor";\r
+        public static final String Built$in_Functions_Modelica_Functions_floor_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/floor/x";\r
+        public static final String Built$in_Functions_Modelica_Functions_floor_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/floor/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_initial = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/initial";\r
+        public static final String Built$in_Functions_Modelica_Functions_initial_isInitial = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/initial/isInitial";\r
+        public static final String Built$in_Functions_Modelica_Functions_log = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/log";\r
+        public static final String Built$in_Functions_Modelica_Functions_log10 = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/log10";\r
+        public static final String Built$in_Functions_Modelica_Functions_log10_u = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/log10/u";\r
+        public static final String Built$in_Functions_Modelica_Functions_log10_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/log10/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_log_u = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/log/u";\r
+        public static final String Built$in_Functions_Modelica_Functions_log_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/log/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_max = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/max";\r
+        public static final String Built$in_Functions_Modelica_Functions_max_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/max/result";\r
+        public static final String Built$in_Functions_Modelica_Functions_max_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/max/x";\r
+        public static final String Built$in_Functions_Modelica_Functions_max_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/max/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_min = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/min";\r
+        public static final String Built$in_Functions_Modelica_Functions_min_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/min/result";\r
+        public static final String Built$in_Functions_Modelica_Functions_min_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/min/x";\r
+        public static final String Built$in_Functions_Modelica_Functions_min_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/min/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_mod = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/mod";\r
+        public static final String Built$in_Functions_Modelica_Functions_mod_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/mod/result";\r
+        public static final String Built$in_Functions_Modelica_Functions_mod_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/mod/x";\r
+        public static final String Built$in_Functions_Modelica_Functions_mod_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/mod/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_noEvent = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/noEvent";\r
+        public static final String Built$in_Functions_Modelica_Functions_noEvent_expr = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/noEvent/expr";\r
+        public static final String Built$in_Functions_Modelica_Functions_noEvent_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/noEvent/result";\r
+        public static final String Built$in_Functions_Modelica_Functions_pre = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/pre";\r
+        public static final String Built$in_Functions_Modelica_Functions_pre_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/pre/result";\r
+        public static final String Built$in_Functions_Modelica_Functions_pre_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/pre/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_rem = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/rem";\r
+        public static final String Built$in_Functions_Modelica_Functions_rem_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/rem/result";\r
+        public static final String Built$in_Functions_Modelica_Functions_rem_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/rem/x";\r
+        public static final String Built$in_Functions_Modelica_Functions_rem_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/rem/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_sample = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sample";\r
+        public static final String Built$in_Functions_Modelica_Functions_sample_interval = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sample/interval";\r
+        public static final String Built$in_Functions_Modelica_Functions_sample_isSample = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sample/isSample";\r
+        public static final String Built$in_Functions_Modelica_Functions_sample_start = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sample/start";\r
+        public static final String Built$in_Functions_Modelica_Functions_semiLinear = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/semiLinear";\r
+        public static final String Built$in_Functions_Modelica_Functions_semiLinear_negativeSlope = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/semiLinear/negativeSlope";\r
+        public static final String Built$in_Functions_Modelica_Functions_semiLinear_positiveSlope = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/semiLinear/positiveSlope";\r
+        public static final String Built$in_Functions_Modelica_Functions_semiLinear_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/semiLinear/result";\r
+        public static final String Built$in_Functions_Modelica_Functions_semiLinear_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/semiLinear/x";\r
+        public static final String Built$in_Functions_Modelica_Functions_sign = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sign";\r
+        public static final String Built$in_Functions_Modelica_Functions_sign_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sign/result";\r
+        public static final String Built$in_Functions_Modelica_Functions_sign_v = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sign/v";\r
+        public static final String Built$in_Functions_Modelica_Functions_sin = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sin";\r
+        public static final String Built$in_Functions_Modelica_Functions_sin_u = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sin/u";\r
+        public static final String Built$in_Functions_Modelica_Functions_sin_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sin/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_sinh = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sinh";\r
+        public static final String Built$in_Functions_Modelica_Functions_sinh_u = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sinh/u";\r
+        public static final String Built$in_Functions_Modelica_Functions_sinh_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sinh/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_smooth = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/smooth";\r
+        public static final String Built$in_Functions_Modelica_Functions_smooth_expr = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/smooth/expr";\r
+        public static final String Built$in_Functions_Modelica_Functions_smooth_p = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/smooth/p";\r
+        public static final String Built$in_Functions_Modelica_Functions_smooth_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/smooth/result";\r
+        public static final String Built$in_Functions_Modelica_Functions_sqrt = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sqrt";\r
+        public static final String Built$in_Functions_Modelica_Functions_sqrt_v = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sqrt/v";\r
+        public static final String Built$in_Functions_Modelica_Functions_sqrt_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/sqrt/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_tan = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/tan";\r
+        public static final String Built$in_Functions_Modelica_Functions_tan_u = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/tan/u";\r
+        public static final String Built$in_Functions_Modelica_Functions_tan_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/tan/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_tanh = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/tanh";\r
+        public static final String Built$in_Functions_Modelica_Functions_tanh_u = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/tanh/u";\r
+        public static final String Built$in_Functions_Modelica_Functions_tanh_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/tanh/y";\r
+        public static final String Built$in_Functions_Modelica_Functions_terminal = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/terminal";\r
+        public static final String Built$in_Functions_Modelica_Functions_terminal_isTerminal = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Modelica%20Functions/terminal/isTerminal";\r
         public static final String Built$in_Functions_Vensim_Functions = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions";\r
         public static final String Built$in_Functions_Vensim_Functions_ABS = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/ABS";\r
+        public static final String Built$in_Functions_Vensim_Functions_ABS_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/ABS/x";\r
+        public static final String Built$in_Functions_Vensim_Functions_ABS_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/ABS/z";\r
         public static final String Built$in_Functions_Vensim_Functions_COS = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/COS";\r
         public static final String Built$in_Functions_Vensim_Functions_COSH = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/COSH";\r
+        public static final String Built$in_Functions_Vensim_Functions_COSH_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/COSH/x";\r
+        public static final String Built$in_Functions_Vensim_Functions_COSH_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/COSH/z";\r
+        public static final String Built$in_Functions_Vensim_Functions_COS_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/COS/x";\r
+        public static final String Built$in_Functions_Vensim_Functions_COS_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/COS/z";\r
         public static final String Built$in_Functions_Vensim_Functions_EXP = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/EXP";\r
+        public static final String Built$in_Functions_Vensim_Functions_EXP_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/EXP/x";\r
+        public static final String Built$in_Functions_Vensim_Functions_EXP_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/EXP/z";\r
         public static final String Built$in_Functions_Vensim_Functions_IFTHENELSE = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/IFTHENELSE";\r
+        public static final String Built$in_Functions_Vensim_Functions_IFTHENELSE_cond = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/IFTHENELSE/cond";\r
+        public static final String Built$in_Functions_Vensim_Functions_IFTHENELSE_onfalse = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/IFTHENELSE/onfalse";\r
+        public static final String Built$in_Functions_Vensim_Functions_IFTHENELSE_ontrue = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/IFTHENELSE/ontrue";\r
+        public static final String Built$in_Functions_Vensim_Functions_IFTHENELSE_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/IFTHENELSE/z";\r
         public static final String Built$in_Functions_Vensim_Functions_LN = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/LN";\r
+        public static final String Built$in_Functions_Vensim_Functions_LN_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/LN/x";\r
+        public static final String Built$in_Functions_Vensim_Functions_LN_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/LN/z";\r
         public static final String Built$in_Functions_Vensim_Functions_MAX = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/MAX";\r
+        public static final String Built$in_Functions_Vensim_Functions_MAX_a = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/MAX/a";\r
+        public static final String Built$in_Functions_Vensim_Functions_MAX_b = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/MAX/b";\r
+        public static final String Built$in_Functions_Vensim_Functions_MAX_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/MAX/z";\r
         public static final String Built$in_Functions_Vensim_Functions_MIN = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/MIN";\r
+        public static final String Built$in_Functions_Vensim_Functions_MIN_a = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/MIN/a";\r
+        public static final String Built$in_Functions_Vensim_Functions_MIN_b = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/MIN/b";\r
+        public static final String Built$in_Functions_Vensim_Functions_MIN_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/MIN/z";\r
         public static final String Built$in_Functions_Vensim_Functions_MODULO = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/MODULO";\r
+        public static final String Built$in_Functions_Vensim_Functions_MODULO_a = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/MODULO/a";\r
+        public static final String Built$in_Functions_Vensim_Functions_MODULO_b = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/MODULO/b";\r
+        public static final String Built$in_Functions_Vensim_Functions_MODULO_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/MODULO/z";\r
         public static final String Built$in_Functions_Vensim_Functions_PULSE = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/PULSE";\r
+        public static final String Built$in_Functions_Vensim_Functions_PULSE_start = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/PULSE/start";\r
+        public static final String Built$in_Functions_Vensim_Functions_PULSE_width = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/PULSE/width";\r
+        public static final String Built$in_Functions_Vensim_Functions_PULSE_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/PULSE/z";\r
         public static final String Built$in_Functions_Vensim_Functions_RAMP = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/RAMP";\r
+        public static final String Built$in_Functions_Vensim_Functions_RAMP_endTime = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/RAMP/endTime";\r
+        public static final String Built$in_Functions_Vensim_Functions_RAMP_slope = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/RAMP/slope";\r
+        public static final String Built$in_Functions_Vensim_Functions_RAMP_startTime = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/RAMP/startTime";\r
+        public static final String Built$in_Functions_Vensim_Functions_RAMP_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/RAMP/z";\r
         public static final String Built$in_Functions_Vensim_Functions_SIN = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/SIN";\r
         public static final String Built$in_Functions_Vensim_Functions_SINH = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/SINH";\r
+        public static final String Built$in_Functions_Vensim_Functions_SINH_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/SINH/x";\r
+        public static final String Built$in_Functions_Vensim_Functions_SINH_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/SINH/z";\r
+        public static final String Built$in_Functions_Vensim_Functions_SIN_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/SIN/x";\r
+        public static final String Built$in_Functions_Vensim_Functions_SIN_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/SIN/z";\r
         public static final String Built$in_Functions_Vensim_Functions_SQRT = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/SQRT";\r
+        public static final String Built$in_Functions_Vensim_Functions_SQRT_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/SQRT/x";\r
+        public static final String Built$in_Functions_Vensim_Functions_SQRT_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/SQRT/z";\r
         public static final String Built$in_Functions_Vensim_Functions_STEP = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/STEP";\r
+        public static final String Built$in_Functions_Vensim_Functions_STEP_height = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/STEP/height";\r
+        public static final String Built$in_Functions_Vensim_Functions_STEP_stepTime = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/STEP/stepTime";\r
+        public static final String Built$in_Functions_Vensim_Functions_STEP_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/STEP/z";\r
         public static final String Built$in_Functions_Vensim_Functions_TAN = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/TAN";\r
         public static final String Built$in_Functions_Vensim_Functions_TANH = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/TANH";\r
+        public static final String Built$in_Functions_Vensim_Functions_TANH_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/TANH/x";\r
+        public static final String Built$in_Functions_Vensim_Functions_TANH_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/TANH/z";\r
+        public static final String Built$in_Functions_Vensim_Functions_TAN_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/TAN/x";\r
+        public static final String Built$in_Functions_Vensim_Functions_TAN_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/TAN/z";\r
         public static final String Built$in_Functions_Vensim_Functions_XIDZ = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/XIDZ";\r
+        public static final String Built$in_Functions_Vensim_Functions_XIDZ_a = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/XIDZ/a";\r
+        public static final String Built$in_Functions_Vensim_Functions_XIDZ_b = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/XIDZ/b";\r
+        public static final String Built$in_Functions_Vensim_Functions_XIDZ_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/XIDZ/x";\r
+        public static final String Built$in_Functions_Vensim_Functions_XIDZ_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/XIDZ/z";\r
         public static final String Built$in_Functions_Vensim_Functions_ZIDZ = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/ZIDZ";\r
+        public static final String Built$in_Functions_Vensim_Functions_ZIDZ_a = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/ZIDZ/a";\r
+        public static final String Built$in_Functions_Vensim_Functions_ZIDZ_b = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/ZIDZ/b";\r
+        public static final String Built$in_Functions_Vensim_Functions_ZIDZ_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/Vensim%20Functions/ZIDZ/z";\r
         public static final String Built$in_Functions_interpolate = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/interpolate";\r
         public static final String Built$in_Functions_interpolateFull = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/interpolateFull";\r
+        public static final String Built$in_Functions_interpolateFull_icol = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/interpolateFull/icol";\r
+        public static final String Built$in_Functions_interpolateFull_table = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/interpolateFull/table";\r
+        public static final String Built$in_Functions_interpolateFull_u = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/interpolateFull/u";\r
+        public static final String Built$in_Functions_interpolateFull_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/interpolateFull/y";\r
+        public static final String Built$in_Functions_interpolate_table = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/interpolate/table";\r
+        public static final String Built$in_Functions_interpolate_u = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/interpolate/u";\r
+        public static final String Built$in_Functions_interpolate_y = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/interpolate/y";\r
         public static final String Built$in_Functions_minmax = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/minmax";\r
+        public static final String Built$in_Functions_minmax_expression = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/minmax/expression";\r
+        public static final String Built$in_Functions_minmax_maximum = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/minmax/maximum";\r
+        public static final String Built$in_Functions_minmax_minimum = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/minmax/minimum";\r
+        public static final String Built$in_Functions_minmax_result = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/minmax/result";\r
         public static final String Built$in_Functions_xidz = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/xidz";\r
+        public static final String Built$in_Functions_xidz_divident = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/xidz/divident";\r
+        public static final String Built$in_Functions_xidz_divisor = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/xidz/divisor";\r
+        public static final String Built$in_Functions_xidz_x = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/xidz/x";\r
+        public static final String Built$in_Functions_xidz_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/xidz/z";\r
         public static final String Built$in_Functions_zidz = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/zidz";\r
+        public static final String Built$in_Functions_zidz_divident = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/zidz/divident";\r
+        public static final String Built$in_Functions_zidz_divisor = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/zidz/divisor";\r
+        public static final String Built$in_Functions_zidz_z = "http://www.simantics.org/Sysdyn-1.1/Built-in%20Functions/zidz/z";\r
         public static final String Center = "http://www.simantics.org/Sysdyn-1.1/Center";\r
         public static final String Cloud = "http://www.simantics.org/Sysdyn-1.1/Cloud";\r
         public static final String CloudSymbol = "http://www.simantics.org/Sysdyn-1.1/CloudSymbol";\r
@@ -653,8 +1187,24 @@ public class SysdynResource {
         public static final String SysdynModel_variableFilter_Inverse = "http://www.simantics.org/Sysdyn-1.1/SysdynModel/variableFilter/Inverse";\r
         public static final String SysdynModelicaFunction = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction";\r
         public static final String SysdynModelicaFunctionLibrary = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunctionLibrary";\r
+        public static final String SysdynModelicaFunction_Input = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/Input";\r
+        public static final String SysdynModelicaFunction_InterfaceVariable = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/InterfaceVariable";\r
+        public static final String SysdynModelicaFunction_Output = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/Output";\r
+        public static final String SysdynModelicaFunction_VariableLengthInput = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/VariableLengthInput";\r
+        public static final String SysdynModelicaFunction_VariableLengthInput_shownLabels = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/VariableLengthInput/shownLabels";\r
+        public static final String SysdynModelicaFunction_VariableLengthInput_shownLabels_Inverse = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/VariableLengthInput/shownLabels/Inverse";\r
+        public static final String SysdynModelicaFunction_definition = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/definition";\r
+        public static final String SysdynModelicaFunction_definition_Inverse = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/definition/Inverse";\r
+        public static final String SysdynModelicaFunction_inputs = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/inputs";\r
+        public static final String SysdynModelicaFunction_inputs_Inverse = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/inputs/Inverse";\r
         public static final String SysdynModelicaFunction_modelicaFunctionCode = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/modelicaFunctionCode";\r
         public static final String SysdynModelicaFunction_modelicaFunctionCode_Inverse = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/modelicaFunctionCode/Inverse";\r
+        public static final String SysdynModelicaFunction_modelicaFunctionInterface = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/modelicaFunctionInterface";\r
+        public static final String SysdynModelicaFunction_modelicaFunctionInterface_Inverse = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/modelicaFunctionInterface/Inverse";\r
+        public static final String SysdynModelicaFunction_optional = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/optional";\r
+        public static final String SysdynModelicaFunction_optional_Inverse = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/optional/Inverse";\r
+        public static final String SysdynModelicaFunction_outputs = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/outputs";\r
+        public static final String SysdynModelicaFunction_outputs_Inverse = "http://www.simantics.org/Sysdyn-1.1/SysdynModelicaFunction/outputs/Inverse";\r
         public static final String SysdynModuleLibrary = "http://www.simantics.org/Sysdyn-1.1/SysdynModuleLibrary";\r
         public static final String SysdynOperationBrowser = "http://www.simantics.org/Sysdyn-1.1/SysdynOperationBrowser";\r
         public static final String SysdynTerminal = "http://www.simantics.org/Sysdyn-1.1/SysdynTerminal";\r
@@ -776,31 +1326,290 @@ public class SysdynResource {
         Bottom = getResourceOrNull(graph, URIs.Bottom);\r
         Browser = getResourceOrNull(graph, URIs.Browser);\r
         Built$in_Functions = getResourceOrNull(graph, URIs.Built$in_Functions);\r
+        Built$in_Functions_Modelica_Array_Functions = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions);\r
+        Built$in_Functions_Modelica_Array_Functions_array = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_array);\r
+        Built$in_Functions_Modelica_Array_Functions_array_A = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_array_A);\r
+        Built$in_Functions_Modelica_Array_Functions_array_A_A = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_array_A_A);\r
+        Built$in_Functions_Modelica_Array_Functions_array_A_B = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_array_A_B);\r
+        Built$in_Functions_Modelica_Array_Functions_array_A_C = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_array_A_C);\r
+        Built$in_Functions_Modelica_Array_Functions_array_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_array_result);\r
+        Built$in_Functions_Modelica_Array_Functions_cat = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_cat);\r
+        Built$in_Functions_Modelica_Array_Functions_cat_A = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_cat_A);\r
+        Built$in_Functions_Modelica_Array_Functions_cat_A_A = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_cat_A_A);\r
+        Built$in_Functions_Modelica_Array_Functions_cat_A_B = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_cat_A_B);\r
+        Built$in_Functions_Modelica_Array_Functions_cat_A_C = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_cat_A_C);\r
+        Built$in_Functions_Modelica_Array_Functions_cat_k = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_cat_k);\r
+        Built$in_Functions_Modelica_Array_Functions_cat_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_cat_result);\r
+        Built$in_Functions_Modelica_Array_Functions_cross = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_cross);\r
+        Built$in_Functions_Modelica_Array_Functions_cross_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_cross_result);\r
+        Built$in_Functions_Modelica_Array_Functions_cross_x = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_cross_x);\r
+        Built$in_Functions_Modelica_Array_Functions_cross_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_cross_y);\r
+        Built$in_Functions_Modelica_Array_Functions_diagonal = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_diagonal);\r
+        Built$in_Functions_Modelica_Array_Functions_diagonal_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_diagonal_result);\r
+        Built$in_Functions_Modelica_Array_Functions_diagonal_v = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_diagonal_v);\r
+        Built$in_Functions_Modelica_Array_Functions_fill = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_fill);\r
+        Built$in_Functions_Modelica_Array_Functions_fill_n = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_fill_n);\r
+        Built$in_Functions_Modelica_Array_Functions_fill_n_n1 = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_fill_n_n1);\r
+        Built$in_Functions_Modelica_Array_Functions_fill_n_n2 = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_fill_n_n2);\r
+        Built$in_Functions_Modelica_Array_Functions_fill_n_n3 = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_fill_n_n3);\r
+        Built$in_Functions_Modelica_Array_Functions_fill_o = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_fill_o);\r
+        Built$in_Functions_Modelica_Array_Functions_fill_s = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_fill_s);\r
+        Built$in_Functions_Modelica_Array_Functions_identity = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_identity);\r
+        Built$in_Functions_Modelica_Array_Functions_identity_n = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_identity_n);\r
+        Built$in_Functions_Modelica_Array_Functions_identity_outArray = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_identity_outArray);\r
+        Built$in_Functions_Modelica_Array_Functions_linspace = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_linspace);\r
+        Built$in_Functions_Modelica_Array_Functions_linspace_n = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_linspace_n);\r
+        Built$in_Functions_Modelica_Array_Functions_linspace_v = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_linspace_v);\r
+        Built$in_Functions_Modelica_Array_Functions_linspace_x1 = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_linspace_x1);\r
+        Built$in_Functions_Modelica_Array_Functions_linspace_x2 = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_linspace_x2);\r
+        Built$in_Functions_Modelica_Array_Functions_matrix = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_matrix);\r
+        Built$in_Functions_Modelica_Array_Functions_matrix_A = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_matrix_A);\r
+        Built$in_Functions_Modelica_Array_Functions_matrix_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_matrix_result);\r
+        Built$in_Functions_Modelica_Array_Functions_max = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_max);\r
+        Built$in_Functions_Modelica_Array_Functions_max_A = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_max_A);\r
+        Built$in_Functions_Modelica_Array_Functions_max_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_max_result);\r
+        Built$in_Functions_Modelica_Array_Functions_min = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_min);\r
+        Built$in_Functions_Modelica_Array_Functions_min_A = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_min_A);\r
+        Built$in_Functions_Modelica_Array_Functions_min_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_min_result);\r
+        Built$in_Functions_Modelica_Array_Functions_ndims = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_ndims);\r
+        Built$in_Functions_Modelica_Array_Functions_ndims_A = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_ndims_A);\r
+        Built$in_Functions_Modelica_Array_Functions_ndims_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_ndims_result);\r
+        Built$in_Functions_Modelica_Array_Functions_ones = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_ones);\r
+        Built$in_Functions_Modelica_Array_Functions_ones_n = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_ones_n);\r
+        Built$in_Functions_Modelica_Array_Functions_ones_n_n1 = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_ones_n_n1);\r
+        Built$in_Functions_Modelica_Array_Functions_ones_n_n2 = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_ones_n_n2);\r
+        Built$in_Functions_Modelica_Array_Functions_ones_n_n3 = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_ones_n_n3);\r
+        Built$in_Functions_Modelica_Array_Functions_ones_o = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_ones_o);\r
+        Built$in_Functions_Modelica_Array_Functions_product = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_product);\r
+        Built$in_Functions_Modelica_Array_Functions_product_A = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_product_A);\r
+        Built$in_Functions_Modelica_Array_Functions_product_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_product_result);\r
+        Built$in_Functions_Modelica_Array_Functions_scalar = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_scalar);\r
+        Built$in_Functions_Modelica_Array_Functions_scalar_A = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_scalar_A);\r
+        Built$in_Functions_Modelica_Array_Functions_scalar_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_scalar_result);\r
+        Built$in_Functions_Modelica_Array_Functions_size = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_size);\r
+        Built$in_Functions_Modelica_Array_Functions_size_A = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_size_A);\r
+        Built$in_Functions_Modelica_Array_Functions_size_i = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_size_i);\r
+        Built$in_Functions_Modelica_Array_Functions_size_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_size_result);\r
+        Built$in_Functions_Modelica_Array_Functions_skew = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_skew);\r
+        Built$in_Functions_Modelica_Array_Functions_skew_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_skew_result);\r
+        Built$in_Functions_Modelica_Array_Functions_skew_x = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_skew_x);\r
+        Built$in_Functions_Modelica_Array_Functions_sum = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_sum);\r
+        Built$in_Functions_Modelica_Array_Functions_sum_A = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_sum_A);\r
+        Built$in_Functions_Modelica_Array_Functions_sum_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_sum_result);\r
+        Built$in_Functions_Modelica_Array_Functions_transpose = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_transpose);\r
+        Built$in_Functions_Modelica_Array_Functions_transpose_A = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_transpose_A);\r
+        Built$in_Functions_Modelica_Array_Functions_transpose_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_transpose_result);\r
+        Built$in_Functions_Modelica_Array_Functions_vector = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_vector);\r
+        Built$in_Functions_Modelica_Array_Functions_vector_A = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_vector_A);\r
+        Built$in_Functions_Modelica_Array_Functions_vector_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_vector_result);\r
+        Built$in_Functions_Modelica_Array_Functions_zeros = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_zeros);\r
+        Built$in_Functions_Modelica_Array_Functions_zeros_n = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_zeros_n);\r
+        Built$in_Functions_Modelica_Array_Functions_zeros_n_n1 = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_zeros_n_n1);\r
+        Built$in_Functions_Modelica_Array_Functions_zeros_n_n2 = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_zeros_n_n2);\r
+        Built$in_Functions_Modelica_Array_Functions_zeros_n_n3 = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_zeros_n_n3);\r
+        Built$in_Functions_Modelica_Array_Functions_zeros_o = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Array_Functions_zeros_o);\r
+        Built$in_Functions_Modelica_Functions = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions);\r
+        Built$in_Functions_Modelica_Functions_abs = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_abs);\r
+        Built$in_Functions_Modelica_Functions_abs_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_abs_result);\r
+        Built$in_Functions_Modelica_Functions_abs_v = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_abs_v);\r
+        Built$in_Functions_Modelica_Functions_acos = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_acos);\r
+        Built$in_Functions_Modelica_Functions_acos_u = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_acos_u);\r
+        Built$in_Functions_Modelica_Functions_acos_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_acos_y);\r
+        Built$in_Functions_Modelica_Functions_asin = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_asin);\r
+        Built$in_Functions_Modelica_Functions_asin_u = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_asin_u);\r
+        Built$in_Functions_Modelica_Functions_asin_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_asin_y);\r
+        Built$in_Functions_Modelica_Functions_atan = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_atan);\r
+        Built$in_Functions_Modelica_Functions_atan2 = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_atan2);\r
+        Built$in_Functions_Modelica_Functions_atan2_u1 = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_atan2_u1);\r
+        Built$in_Functions_Modelica_Functions_atan2_u2 = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_atan2_u2);\r
+        Built$in_Functions_Modelica_Functions_atan2_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_atan2_y);\r
+        Built$in_Functions_Modelica_Functions_atan_u = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_atan_u);\r
+        Built$in_Functions_Modelica_Functions_atan_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_atan_y);\r
+        Built$in_Functions_Modelica_Functions_ceil = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_ceil);\r
+        Built$in_Functions_Modelica_Functions_ceil_u = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_ceil_u);\r
+        Built$in_Functions_Modelica_Functions_ceil_x = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_ceil_x);\r
+        Built$in_Functions_Modelica_Functions_ceil_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_ceil_y);\r
+        Built$in_Functions_Modelica_Functions_cos = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_cos);\r
+        Built$in_Functions_Modelica_Functions_cosh = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_cosh);\r
+        Built$in_Functions_Modelica_Functions_cosh_u = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_cosh_u);\r
+        Built$in_Functions_Modelica_Functions_cosh_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_cosh_y);\r
+        Built$in_Functions_Modelica_Functions_delay = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_delay);\r
+        Built$in_Functions_Modelica_Functions_delay_delayMax = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_delay_delayMax);\r
+        Built$in_Functions_Modelica_Functions_delay_delayTime = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_delay_delayTime);\r
+        Built$in_Functions_Modelica_Functions_delay_expr = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_delay_expr);\r
+        Built$in_Functions_Modelica_Functions_delay_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_delay_result);\r
+        Built$in_Functions_Modelica_Functions_der = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_der);\r
+        Built$in_Functions_Modelica_Functions_der_dexpr = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_der_dexpr);\r
+        Built$in_Functions_Modelica_Functions_der_expr = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_der_expr);\r
+        Built$in_Functions_Modelica_Functions_div = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_div);\r
+        Built$in_Functions_Modelica_Functions_div_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_div_result);\r
+        Built$in_Functions_Modelica_Functions_div_x = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_div_x);\r
+        Built$in_Functions_Modelica_Functions_div_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_div_y);\r
+        Built$in_Functions_Modelica_Functions_edge = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_edge);\r
+        Built$in_Functions_Modelica_Functions_edge_b = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_edge_b);\r
+        Built$in_Functions_Modelica_Functions_edge_edgeEvent = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_edge_edgeEvent);\r
+        Built$in_Functions_Modelica_Functions_exp = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_exp);\r
+        Built$in_Functions_Modelica_Functions_exp_u = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_exp_u);\r
+        Built$in_Functions_Modelica_Functions_exp_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_exp_y);\r
+        Built$in_Functions_Modelica_Functions_floor = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_floor);\r
+        Built$in_Functions_Modelica_Functions_floor_x = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_floor_x);\r
+        Built$in_Functions_Modelica_Functions_floor_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_floor_y);\r
+        Built$in_Functions_Modelica_Functions_initial = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_initial);\r
+        Built$in_Functions_Modelica_Functions_initial_isInitial = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_initial_isInitial);\r
+        Built$in_Functions_Modelica_Functions_log = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_log);\r
+        Built$in_Functions_Modelica_Functions_log10 = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_log10);\r
+        Built$in_Functions_Modelica_Functions_log10_u = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_log10_u);\r
+        Built$in_Functions_Modelica_Functions_log10_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_log10_y);\r
+        Built$in_Functions_Modelica_Functions_log_u = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_log_u);\r
+        Built$in_Functions_Modelica_Functions_log_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_log_y);\r
+        Built$in_Functions_Modelica_Functions_max = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_max);\r
+        Built$in_Functions_Modelica_Functions_max_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_max_result);\r
+        Built$in_Functions_Modelica_Functions_max_x = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_max_x);\r
+        Built$in_Functions_Modelica_Functions_max_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_max_y);\r
+        Built$in_Functions_Modelica_Functions_min = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_min);\r
+        Built$in_Functions_Modelica_Functions_min_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_min_result);\r
+        Built$in_Functions_Modelica_Functions_min_x = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_min_x);\r
+        Built$in_Functions_Modelica_Functions_min_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_min_y);\r
+        Built$in_Functions_Modelica_Functions_mod = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_mod);\r
+        Built$in_Functions_Modelica_Functions_mod_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_mod_result);\r
+        Built$in_Functions_Modelica_Functions_mod_x = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_mod_x);\r
+        Built$in_Functions_Modelica_Functions_mod_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_mod_y);\r
+        Built$in_Functions_Modelica_Functions_noEvent = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_noEvent);\r
+        Built$in_Functions_Modelica_Functions_noEvent_expr = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_noEvent_expr);\r
+        Built$in_Functions_Modelica_Functions_noEvent_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_noEvent_result);\r
+        Built$in_Functions_Modelica_Functions_pre = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_pre);\r
+        Built$in_Functions_Modelica_Functions_pre_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_pre_result);\r
+        Built$in_Functions_Modelica_Functions_pre_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_pre_y);\r
+        Built$in_Functions_Modelica_Functions_rem = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_rem);\r
+        Built$in_Functions_Modelica_Functions_rem_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_rem_result);\r
+        Built$in_Functions_Modelica_Functions_rem_x = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_rem_x);\r
+        Built$in_Functions_Modelica_Functions_rem_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_rem_y);\r
+        Built$in_Functions_Modelica_Functions_sample = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sample);\r
+        Built$in_Functions_Modelica_Functions_sample_interval = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sample_interval);\r
+        Built$in_Functions_Modelica_Functions_sample_isSample = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sample_isSample);\r
+        Built$in_Functions_Modelica_Functions_sample_start = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sample_start);\r
+        Built$in_Functions_Modelica_Functions_semiLinear = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_semiLinear);\r
+        Built$in_Functions_Modelica_Functions_semiLinear_negativeSlope = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_semiLinear_negativeSlope);\r
+        Built$in_Functions_Modelica_Functions_semiLinear_positiveSlope = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_semiLinear_positiveSlope);\r
+        Built$in_Functions_Modelica_Functions_semiLinear_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_semiLinear_result);\r
+        Built$in_Functions_Modelica_Functions_semiLinear_x = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_semiLinear_x);\r
+        Built$in_Functions_Modelica_Functions_sign = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sign);\r
+        Built$in_Functions_Modelica_Functions_sign_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sign_result);\r
+        Built$in_Functions_Modelica_Functions_sign_v = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sign_v);\r
+        Built$in_Functions_Modelica_Functions_sin = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sin);\r
+        Built$in_Functions_Modelica_Functions_sin_u = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sin_u);\r
+        Built$in_Functions_Modelica_Functions_sin_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sin_y);\r
+        Built$in_Functions_Modelica_Functions_sinh = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sinh);\r
+        Built$in_Functions_Modelica_Functions_sinh_u = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sinh_u);\r
+        Built$in_Functions_Modelica_Functions_sinh_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sinh_y);\r
+        Built$in_Functions_Modelica_Functions_smooth = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_smooth);\r
+        Built$in_Functions_Modelica_Functions_smooth_expr = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_smooth_expr);\r
+        Built$in_Functions_Modelica_Functions_smooth_p = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_smooth_p);\r
+        Built$in_Functions_Modelica_Functions_smooth_result = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_smooth_result);\r
+        Built$in_Functions_Modelica_Functions_sqrt = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sqrt);\r
+        Built$in_Functions_Modelica_Functions_sqrt_v = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sqrt_v);\r
+        Built$in_Functions_Modelica_Functions_sqrt_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_sqrt_y);\r
+        Built$in_Functions_Modelica_Functions_tan = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_tan);\r
+        Built$in_Functions_Modelica_Functions_tan_u = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_tan_u);\r
+        Built$in_Functions_Modelica_Functions_tan_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_tan_y);\r
+        Built$in_Functions_Modelica_Functions_tanh = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_tanh);\r
+        Built$in_Functions_Modelica_Functions_tanh_u = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_tanh_u);\r
+        Built$in_Functions_Modelica_Functions_tanh_y = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_tanh_y);\r
+        Built$in_Functions_Modelica_Functions_terminal = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_terminal);\r
+        Built$in_Functions_Modelica_Functions_terminal_isTerminal = getResourceOrNull(graph, URIs.Built$in_Functions_Modelica_Functions_terminal_isTerminal);\r
         Built$in_Functions_Vensim_Functions = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions);\r
         Built$in_Functions_Vensim_Functions_ABS = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_ABS);\r
+        Built$in_Functions_Vensim_Functions_ABS_x = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_ABS_x);\r
+        Built$in_Functions_Vensim_Functions_ABS_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_ABS_z);\r
         Built$in_Functions_Vensim_Functions_COS = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_COS);\r
         Built$in_Functions_Vensim_Functions_COSH = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_COSH);\r
+        Built$in_Functions_Vensim_Functions_COSH_x = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_COSH_x);\r
+        Built$in_Functions_Vensim_Functions_COSH_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_COSH_z);\r
+        Built$in_Functions_Vensim_Functions_COS_x = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_COS_x);\r
+        Built$in_Functions_Vensim_Functions_COS_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_COS_z);\r
         Built$in_Functions_Vensim_Functions_EXP = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_EXP);\r
+        Built$in_Functions_Vensim_Functions_EXP_x = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_EXP_x);\r
+        Built$in_Functions_Vensim_Functions_EXP_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_EXP_z);\r
         Built$in_Functions_Vensim_Functions_IFTHENELSE = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_IFTHENELSE);\r
+        Built$in_Functions_Vensim_Functions_IFTHENELSE_cond = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_IFTHENELSE_cond);\r
+        Built$in_Functions_Vensim_Functions_IFTHENELSE_onfalse = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_IFTHENELSE_onfalse);\r
+        Built$in_Functions_Vensim_Functions_IFTHENELSE_ontrue = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_IFTHENELSE_ontrue);\r
+        Built$in_Functions_Vensim_Functions_IFTHENELSE_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_IFTHENELSE_z);\r
         Built$in_Functions_Vensim_Functions_LN = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_LN);\r
+        Built$in_Functions_Vensim_Functions_LN_x = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_LN_x);\r
+        Built$in_Functions_Vensim_Functions_LN_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_LN_z);\r
         Built$in_Functions_Vensim_Functions_MAX = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_MAX);\r
+        Built$in_Functions_Vensim_Functions_MAX_a = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_MAX_a);\r
+        Built$in_Functions_Vensim_Functions_MAX_b = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_MAX_b);\r
+        Built$in_Functions_Vensim_Functions_MAX_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_MAX_z);\r
         Built$in_Functions_Vensim_Functions_MIN = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_MIN);\r
+        Built$in_Functions_Vensim_Functions_MIN_a = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_MIN_a);\r
+        Built$in_Functions_Vensim_Functions_MIN_b = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_MIN_b);\r
+        Built$in_Functions_Vensim_Functions_MIN_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_MIN_z);\r
         Built$in_Functions_Vensim_Functions_MODULO = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_MODULO);\r
+        Built$in_Functions_Vensim_Functions_MODULO_a = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_MODULO_a);\r
+        Built$in_Functions_Vensim_Functions_MODULO_b = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_MODULO_b);\r
+        Built$in_Functions_Vensim_Functions_MODULO_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_MODULO_z);\r
         Built$in_Functions_Vensim_Functions_PULSE = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_PULSE);\r
+        Built$in_Functions_Vensim_Functions_PULSE_start = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_PULSE_start);\r
+        Built$in_Functions_Vensim_Functions_PULSE_width = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_PULSE_width);\r
+        Built$in_Functions_Vensim_Functions_PULSE_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_PULSE_z);\r
         Built$in_Functions_Vensim_Functions_RAMP = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_RAMP);\r
+        Built$in_Functions_Vensim_Functions_RAMP_endTime = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_RAMP_endTime);\r
+        Built$in_Functions_Vensim_Functions_RAMP_slope = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_RAMP_slope);\r
+        Built$in_Functions_Vensim_Functions_RAMP_startTime = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_RAMP_startTime);\r
+        Built$in_Functions_Vensim_Functions_RAMP_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_RAMP_z);\r
         Built$in_Functions_Vensim_Functions_SIN = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_SIN);\r
         Built$in_Functions_Vensim_Functions_SINH = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_SINH);\r
+        Built$in_Functions_Vensim_Functions_SINH_x = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_SINH_x);\r
+        Built$in_Functions_Vensim_Functions_SINH_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_SINH_z);\r
+        Built$in_Functions_Vensim_Functions_SIN_x = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_SIN_x);\r
+        Built$in_Functions_Vensim_Functions_SIN_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_SIN_z);\r
         Built$in_Functions_Vensim_Functions_SQRT = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_SQRT);\r
+        Built$in_Functions_Vensim_Functions_SQRT_x = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_SQRT_x);\r
+        Built$in_Functions_Vensim_Functions_SQRT_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_SQRT_z);\r
         Built$in_Functions_Vensim_Functions_STEP = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_STEP);\r
+        Built$in_Functions_Vensim_Functions_STEP_height = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_STEP_height);\r
+        Built$in_Functions_Vensim_Functions_STEP_stepTime = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_STEP_stepTime);\r
+        Built$in_Functions_Vensim_Functions_STEP_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_STEP_z);\r
         Built$in_Functions_Vensim_Functions_TAN = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_TAN);\r
         Built$in_Functions_Vensim_Functions_TANH = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_TANH);\r
+        Built$in_Functions_Vensim_Functions_TANH_x = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_TANH_x);\r
+        Built$in_Functions_Vensim_Functions_TANH_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_TANH_z);\r
+        Built$in_Functions_Vensim_Functions_TAN_x = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_TAN_x);\r
+        Built$in_Functions_Vensim_Functions_TAN_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_TAN_z);\r
         Built$in_Functions_Vensim_Functions_XIDZ = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_XIDZ);\r
+        Built$in_Functions_Vensim_Functions_XIDZ_a = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_XIDZ_a);\r
+        Built$in_Functions_Vensim_Functions_XIDZ_b = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_XIDZ_b);\r
+        Built$in_Functions_Vensim_Functions_XIDZ_x = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_XIDZ_x);\r
+        Built$in_Functions_Vensim_Functions_XIDZ_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_XIDZ_z);\r
         Built$in_Functions_Vensim_Functions_ZIDZ = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_ZIDZ);\r
+        Built$in_Functions_Vensim_Functions_ZIDZ_a = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_ZIDZ_a);\r
+        Built$in_Functions_Vensim_Functions_ZIDZ_b = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_ZIDZ_b);\r
+        Built$in_Functions_Vensim_Functions_ZIDZ_z = getResourceOrNull(graph, URIs.Built$in_Functions_Vensim_Functions_ZIDZ_z);\r
         Built$in_Functions_interpolate = getResourceOrNull(graph, URIs.Built$in_Functions_interpolate);\r
         Built$in_Functions_interpolateFull = getResourceOrNull(graph, URIs.Built$in_Functions_interpolateFull);\r
+        Built$in_Functions_interpolateFull_icol = getResourceOrNull(graph, URIs.Built$in_Functions_interpolateFull_icol);\r
+        Built$in_Functions_interpolateFull_table = getResourceOrNull(graph, URIs.Built$in_Functions_interpolateFull_table);\r
+        Built$in_Functions_interpolateFull_u = getResourceOrNull(graph, URIs.Built$in_Functions_interpolateFull_u);\r
+        Built$in_Functions_interpolateFull_y = getResourceOrNull(graph, URIs.Built$in_Functions_interpolateFull_y);\r
+        Built$in_Functions_interpolate_table = getResourceOrNull(graph, URIs.Built$in_Functions_interpolate_table);\r
+        Built$in_Functions_interpolate_u = getResourceOrNull(graph, URIs.Built$in_Functions_interpolate_u);\r
+        Built$in_Functions_interpolate_y = getResourceOrNull(graph, URIs.Built$in_Functions_interpolate_y);\r
         Built$in_Functions_minmax = getResourceOrNull(graph, URIs.Built$in_Functions_minmax);\r
+        Built$in_Functions_minmax_expression = getResourceOrNull(graph, URIs.Built$in_Functions_minmax_expression);\r
+        Built$in_Functions_minmax_maximum = getResourceOrNull(graph, URIs.Built$in_Functions_minmax_maximum);\r
+        Built$in_Functions_minmax_minimum = getResourceOrNull(graph, URIs.Built$in_Functions_minmax_minimum);\r
+        Built$in_Functions_minmax_result = getResourceOrNull(graph, URIs.Built$in_Functions_minmax_result);\r
         Built$in_Functions_xidz = getResourceOrNull(graph, URIs.Built$in_Functions_xidz);\r
+        Built$in_Functions_xidz_divident = getResourceOrNull(graph, URIs.Built$in_Functions_xidz_divident);\r
+        Built$in_Functions_xidz_divisor = getResourceOrNull(graph, URIs.Built$in_Functions_xidz_divisor);\r
+        Built$in_Functions_xidz_x = getResourceOrNull(graph, URIs.Built$in_Functions_xidz_x);\r
+        Built$in_Functions_xidz_z = getResourceOrNull(graph, URIs.Built$in_Functions_xidz_z);\r
         Built$in_Functions_zidz = getResourceOrNull(graph, URIs.Built$in_Functions_zidz);\r
+        Built$in_Functions_zidz_divident = getResourceOrNull(graph, URIs.Built$in_Functions_zidz_divident);\r
+        Built$in_Functions_zidz_divisor = getResourceOrNull(graph, URIs.Built$in_Functions_zidz_divisor);\r
+        Built$in_Functions_zidz_z = getResourceOrNull(graph, URIs.Built$in_Functions_zidz_z);\r
         Center = getResourceOrNull(graph, URIs.Center);\r
         Cloud = getResourceOrNull(graph, URIs.Cloud);\r
         CloudSymbol = getResourceOrNull(graph, URIs.CloudSymbol);\r
@@ -1035,8 +1844,24 @@ public class SysdynResource {
         SysdynModel_variableFilter_Inverse = getResourceOrNull(graph, URIs.SysdynModel_variableFilter_Inverse);\r
         SysdynModelicaFunction = getResourceOrNull(graph, URIs.SysdynModelicaFunction);\r
         SysdynModelicaFunctionLibrary = getResourceOrNull(graph, URIs.SysdynModelicaFunctionLibrary);\r
+        SysdynModelicaFunction_Input = getResourceOrNull(graph, URIs.SysdynModelicaFunction_Input);\r
+        SysdynModelicaFunction_InterfaceVariable = getResourceOrNull(graph, URIs.SysdynModelicaFunction_InterfaceVariable);\r
+        SysdynModelicaFunction_Output = getResourceOrNull(graph, URIs.SysdynModelicaFunction_Output);\r
+        SysdynModelicaFunction_VariableLengthInput = getResourceOrNull(graph, URIs.SysdynModelicaFunction_VariableLengthInput);\r
+        SysdynModelicaFunction_VariableLengthInput_shownLabels = getResourceOrNull(graph, URIs.SysdynModelicaFunction_VariableLengthInput_shownLabels);\r
+        SysdynModelicaFunction_VariableLengthInput_shownLabels_Inverse = getResourceOrNull(graph, URIs.SysdynModelicaFunction_VariableLengthInput_shownLabels_Inverse);\r
+        SysdynModelicaFunction_definition = getResourceOrNull(graph, URIs.SysdynModelicaFunction_definition);\r
+        SysdynModelicaFunction_definition_Inverse = getResourceOrNull(graph, URIs.SysdynModelicaFunction_definition_Inverse);\r
+        SysdynModelicaFunction_inputs = getResourceOrNull(graph, URIs.SysdynModelicaFunction_inputs);\r
+        SysdynModelicaFunction_inputs_Inverse = getResourceOrNull(graph, URIs.SysdynModelicaFunction_inputs_Inverse);\r
         SysdynModelicaFunction_modelicaFunctionCode = getResourceOrNull(graph, URIs.SysdynModelicaFunction_modelicaFunctionCode);\r
         SysdynModelicaFunction_modelicaFunctionCode_Inverse = getResourceOrNull(graph, URIs.SysdynModelicaFunction_modelicaFunctionCode_Inverse);\r
+        SysdynModelicaFunction_modelicaFunctionInterface = getResourceOrNull(graph, URIs.SysdynModelicaFunction_modelicaFunctionInterface);\r
+        SysdynModelicaFunction_modelicaFunctionInterface_Inverse = getResourceOrNull(graph, URIs.SysdynModelicaFunction_modelicaFunctionInterface_Inverse);\r
+        SysdynModelicaFunction_optional = getResourceOrNull(graph, URIs.SysdynModelicaFunction_optional);\r
+        SysdynModelicaFunction_optional_Inverse = getResourceOrNull(graph, URIs.SysdynModelicaFunction_optional_Inverse);\r
+        SysdynModelicaFunction_outputs = getResourceOrNull(graph, URIs.SysdynModelicaFunction_outputs);\r
+        SysdynModelicaFunction_outputs_Inverse = getResourceOrNull(graph, URIs.SysdynModelicaFunction_outputs_Inverse);\r
         SysdynModuleLibrary = getResourceOrNull(graph, URIs.SysdynModuleLibrary);\r
         SysdynOperationBrowser = getResourceOrNull(graph, URIs.SysdynOperationBrowser);\r
         SysdynTerminal = getResourceOrNull(graph, URIs.SysdynTerminal);\r
diff --git a/org.simantics.sysdyn.ui/icons/function.png b/org.simantics.sysdyn.ui/icons/function.png
new file mode 100644 (file)
index 0000000..d677847
Binary files /dev/null and b/org.simantics.sysdyn.ui/icons/function.png differ
diff --git a/org.simantics.sysdyn.ui/icons/functionLink.png b/org.simantics.sysdyn.ui/icons/functionLink.png
new file mode 100644 (file)
index 0000000..70ae679
Binary files /dev/null and b/org.simantics.sysdyn.ui/icons/functionLink.png differ
diff --git a/org.simantics.sysdyn.ui/icons/modelicaArrayFunction.png b/org.simantics.sysdyn.ui/icons/modelicaArrayFunction.png
new file mode 100644 (file)
index 0000000..878469f
Binary files /dev/null and b/org.simantics.sysdyn.ui/icons/modelicaArrayFunction.png differ
diff --git a/org.simantics.sysdyn.ui/icons/modelicaFunction.png b/org.simantics.sysdyn.ui/icons/modelicaFunction.png
new file mode 100644 (file)
index 0000000..30ee96f
Binary files /dev/null and b/org.simantics.sysdyn.ui/icons/modelicaFunction.png differ
diff --git a/org.simantics.sysdyn.ui/icons/sysdynFunction.png b/org.simantics.sysdyn.ui/icons/sysdynFunction.png
new file mode 100644 (file)
index 0000000..ddc929d
Binary files /dev/null and b/org.simantics.sysdyn.ui/icons/sysdynFunction.png differ
diff --git a/org.simantics.sysdyn.ui/icons/variable.png b/org.simantics.sysdyn.ui/icons/variable.png
new file mode 100644 (file)
index 0000000..0299de3
Binary files /dev/null and b/org.simantics.sysdyn.ui/icons/variable.png differ
diff --git a/org.simantics.sysdyn.ui/icons/variableGray.png b/org.simantics.sysdyn.ui/icons/variableGray.png
new file mode 100644 (file)
index 0000000..a3ed59b
Binary files /dev/null and b/org.simantics.sysdyn.ui/icons/variableGray.png differ
diff --git a/org.simantics.sysdyn.ui/icons/vensimFunction.png b/org.simantics.sysdyn.ui/icons/vensimFunction.png
new file mode 100644 (file)
index 0000000..f007096
Binary files /dev/null and b/org.simantics.sysdyn.ui/icons/vensimFunction.png differ
index 0b2315990c4bf9c90eb02beabed5246b2d158979..492136460e9881cb536200c16ffc0a77c88b5afa 100644 (file)
@@ -50,6 +50,7 @@ IWorkbenchPreferencePage {
         setDescription("Modelica preferences");\r
     }\r
 \r
+    @Override\r
     public void createFieldEditors() {\r
 \r
         final File installed = ModelicaManager.getInstalledOpenModelicaHome();\r
index 5fc90bbfdb18e468d2adb8ff911ec1b51201ccb6..2817708fdb314d58e79dfad43746dad2074c2898 100644 (file)
@@ -48,7 +48,7 @@ public class FunctionTab extends LabelPropertyTabContributor {
         \r
         Group modelicaGroup = new Group(composite, SWT.SHADOW_ETCHED_IN);\r
         modelicaGroup.setText("Modelica code");\r
-        GridDataFactory.fillDefaults().grab(true, true).applyTo(modelicaGroup);\r
+        GridDataFactory.fillDefaults().grab(true, true).minSize(150, 0).applyTo(modelicaGroup);\r
         GridLayoutFactory.fillDefaults().spacing(0, 0).margins(3, 3).applyTo(modelicaGroup);\r
         \r
         Label startLabel = new Label(modelicaGroup, support, SWT.NONE);\r
index ce09e6a890f7d0a822bb40499fcdd3b0d9a5d87a..9fdc02ddebc39c0cb677c5daf5a6957e996e3421 100644 (file)
@@ -35,14 +35,13 @@ import org.simantics.browsing.ui.swt.widgets.impl.WidgetSupport;
 import org.simantics.db.AsyncReadGraph;\r
 import org.simantics.db.ReadGraph;\r
 import org.simantics.db.Resource;\r
-import org.simantics.db.common.request.ObjectsWithType;\r
-import org.simantics.db.common.utils.NameUtils;\r
 import org.simantics.db.exception.DatabaseException;\r
 import org.simantics.db.management.ISessionContext;\r
 import org.simantics.db.procedure.AsyncListener;\r
 import org.simantics.db.request.Read;\r
 import org.simantics.layer0.Layer0;\r
 import org.simantics.sysdyn.SysdynResource;\r
+import org.simantics.sysdyn.ui.properties.widgets.expressions.Function;\r
 import org.simantics.ui.SimanticsUI;\r
 import org.simantics.utils.ui.ISelectionUtils;\r
 \r
@@ -82,65 +81,17 @@ public class ShortcutTabWidget implements Widget {
         TableItem item = new TableItem(functionTable, SWT.NONE);\r
         \r
         //Finding functions\r
-        ArrayList<String> funktio = new ArrayList<String>();\r
-               try {\r
-                        funktio = SimanticsUI.getSession().syncRequest(new Read<ArrayList<String>>() {\r
-                               @Override\r
-                               public ArrayList<String> perform(ReadGraph graph)\r
-                                               throws DatabaseException {\r
-                                       SysdynResource sr = SysdynResource.getInstance(graph);\r
-                                       Layer0 l0 = Layer0.getInstance(graph);\r
-                                       ArrayList<String> funktiot = new ArrayList<String>();\r
-                                       \r
-                                       Resource funktionlibrary = graph.getPossibleResource(SysdynResource.URIs.Built$in_Functions);\r
-                                       for(Resource r : graph.syncRequest(new ObjectsWithType(funktionlibrary, l0.ConsistsOf, sr.SysdynModelicaFunction))) {\r
-                                               String name = NameUtils.getSafeName(graph, r);\r
-                                               funktiot.add(name);\r
-                                       }\r
-                                       \r
-                                       Resource subfunktionlibrary = graph.getPossibleResource(SysdynResource.URIs.Built$in_Functions_Vensim_Functions);\r
-                                       for(Resource r : graph.syncRequest(new ObjectsWithType(subfunktionlibrary, l0.ConsistsOf, sr.SysdynModelicaFunction))) {\r
-                                               String name = NameUtils.getSafeName(graph, r);\r
-                                               funktiot.add(name);\r
-                                       }\r
-                                       \r
-                                       return funktiot;\r
-                               }\r
-                       });\r
-               }\r
-               catch (DatabaseException e) {\r
-                       e.printStackTrace();\r
-               }\r
+        ArrayList<Function> functionList = Function.getAllFunctions();\r
         \r
-               Collections.sort(funktio);\r
+               Collections.sort(functionList);\r
                \r
-               for(int a=0; a < funktio.size(); a++){\r
-                       item.setText(funktio.get(a)+"()");\r
-                       item.setData(funktio.get(a)+"({})");\r
+               for(Function function : functionList){\r
+                       item.setText(function.getName() + "()");\r
+                       item.setData(function.getName() + "(" + function.getParameterList() + ")");\r
+                       item.setImage(Function.getImage(functionTable.getDisplay(), function));\r
                        item = new TableItem(functionTable, SWT.NONE);\r
                }\r
                \r
-//             TableItem item = new TableItem(functionTable, SWT.NONE);\r
-//             item.setText("min()");\r
-//             item.setData("min({ })");\r
-//             item = new TableItem(functionTable, SWT.NONE);\r
-//             item.setText("max()");\r
-//             item.setData("max({ })");\r
-//             item = new TableItem(functionTable, SWT.NONE);\r
-//             item.setText("abs()");\r
-//             item.setData("abs({ })");\r
-//             item = new TableItem(functionTable, SWT.NONE);\r
-//             item.setText("if then else");\r
-//             item.setData("if then else");\r
-//             item = new TableItem(functionTable, SWT.NONE);\r
-//             item.setText("xidz()");\r
-//             item.setData("xidz( number, divisor , x)");\r
-//             item = new TableItem(functionTable, SWT.NONE);\r
-//             item.setText("interpolate()");\r
-//             item.setData("interpolate( x, table)");     \r
-//             item = new TableItem(functionTable, SWT.NONE);\r
-//             item.setText("delay()");\r
-//             item.setData("delay( expression, delayTime)");\r
         functions.setControl(functionTable);\r
     }\r
 \r
index 34140ed84e3bcdc707383cf4e8a9d61135a9bdeb..a8276262df4e5d718d8c6f181617949093304e09 100644 (file)
@@ -14,23 +14,19 @@ package org.simantics.sysdyn.ui.properties.widgets.expressions;
 import java.util.ArrayList;\r
 import java.util.Collections;\r
 \r
+import org.eclipse.jface.resource.ImageDescriptor;\r
 import org.eclipse.jface.text.ITextViewer;\r
 import org.eclipse.jface.text.contentassist.CompletionProposal;\r
 import org.eclipse.jface.text.contentassist.ICompletionProposal;\r
 import org.eclipse.jface.text.contentassist.IContentAssistProcessor;\r
 import org.eclipse.jface.text.contentassist.IContextInformation;\r
 import org.eclipse.jface.text.contentassist.IContextInformationValidator;\r
+import org.eclipse.swt.graphics.Image;\r
+import org.eclipse.swt.widgets.Display;\r
 import org.eclipse.swt.widgets.Table;\r
 import org.eclipse.swt.widgets.TableItem;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.common.request.ObjectsWithType;\r
-import org.simantics.db.common.utils.NameUtils;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.request.Read;\r
-import org.simantics.layer0.Layer0;\r
-import org.simantics.sysdyn.SysdynResource;\r
-import org.simantics.ui.SimanticsUI;\r
+import org.simantics.sysdyn.ui.Activator;\r
+import org.simantics.sysdyn.ui.utils.ExpressionUtils;\r
 \r
 \r
 /**\r
@@ -42,10 +38,11 @@ import org.simantics.ui.SimanticsUI;
  */\r
 public class CompletionProcessor implements IContentAssistProcessor {\r
        \r
-       private Table allowedVariables;\r
-       private ArrayList<String> functions;\r
-       private ArrayList<String> variables = null;\r
-       \r
+    private final Table allowedVariables;\r
+    private ArrayList<Function> functions;\r
+    private ArrayList<String> variables = null;\r
+    private ArrayList<String> timeAndSelfVariables = null;\r
+    \r
        private final char[] allowedCharacters = {\r
                'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','Ã¥','ä','ö',\r
                'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','Ã…','Ä','Ö',\r
@@ -56,75 +53,120 @@ public class CompletionProcessor implements IContentAssistProcessor {
        public CompletionProcessor(Table allowedVariables, boolean allowFunctions){\r
                this.allowedVariables = allowedVariables;\r
                \r
-               //Finding functions\r
-        functions = new ArrayList<String>();\r
-        if (allowFunctions) {\r
-                       try {\r
-                                functions = SimanticsUI.getSession().syncRequest(new Read<ArrayList<String>>() {\r
-                                       @Override\r
-                                       public ArrayList<String> perform(ReadGraph graph)\r
-                                                       throws DatabaseException {\r
-                                               SysdynResource sr = SysdynResource.getInstance(graph);\r
-                                               Layer0 l0 = Layer0.getInstance(graph);\r
-                                               ArrayList<String> functions = new ArrayList<String>();\r
-                                               \r
-                                               Resource funktionlibrary = graph.getPossibleResource(SysdynResource.URIs.Built$in_Functions);\r
-                                               for(Resource r : graph.syncRequest(new ObjectsWithType(funktionlibrary, l0.ConsistsOf, sr.SysdynModelicaFunction))) {\r
-                                                       String name = NameUtils.getSafeName(graph, r);\r
-                                                       functions.add(name);\r
-                                               }\r
-                                               \r
-                                               Resource subfunktionlibrary = graph.getPossibleResource(SysdynResource.URIs.Built$in_Functions_Vensim_Functions);\r
-                                               for(Resource r : graph.syncRequest(new ObjectsWithType(subfunktionlibrary, l0.ConsistsOf, sr.SysdynModelicaFunction))) {\r
-                                                       String name = NameUtils.getSafeName(graph, r);\r
-                                                       functions.add(name);\r
-                                               }\r
-                                               \r
-                                               return functions;\r
-                                       }\r
-                               });\r
-                       }\r
-                       catch (DatabaseException e) {\r
-                               e.printStackTrace();\r
-                       }\r
-        }\r
-        Collections.sort(functions);\r
-               for (int i = 0; i < functions.size(); ++i) {\r
-            functions.set(i, functions.get(i) + "()");\r
-               }\r
+               if (allowFunctions) {\r
+                   //Finding functions and sorting them.\r
+               functions = Function.getAllFunctions();\r
+            Collections.sort(functions);\r
+       }\r
        }\r
 \r
-       private ICompletionProposal[] collectProposals(String token, int offset) {\r
-               //Finding variables\r
-               if (variables == null) {\r
-                       variables = new ArrayList<String>();\r
-                   if(allowedVariables != null && !allowedVariables.isDisposed()) {\r
-                       TableItem[] connectedVariables = allowedVariables.getItems();\r
-                       for(TableItem ti : connectedVariables) {\r
-                               this.variables.add(ti.getText());\r
-                       }\r
-                   }\r
-                   Collections.sort(variables);\r
-               }\r
-               \r
-               ArrayList<ICompletionProposal> resultArray = new ArrayList<ICompletionProposal>();\r
-               for (String variable : variables) {\r
-                       if (token.length() == 0 || variable.toUpperCase().startsWith(token.toUpperCase())) {\r
-                               resultArray.add(new CompletionProposal(variable, \r
-                                               offset - token.length(),\r
-                                               token.length(), \r
-                                               variable.length()));\r
-                       }       \r
-               }\r
-               for (String function : functions) {\r
-                       if (token.length() == 0 || function.toUpperCase().startsWith(token.toUpperCase())) {\r
-                               resultArray.add(new CompletionProposal(function, \r
-                                               offset - token.length(),\r
-                                               token.length(), \r
-                                               function.length() - 1));\r
-                       }       \r
-               }\r
-               ICompletionProposal[] result = new ICompletionProposal[resultArray.size()];\r
+       /**\r
+        * Collect and sort all variables.\r
+        * @param display\r
+        */\r
+       private void findVariables(Display display) {\r
+           if (variables == null) {\r
+            variables = new ArrayList<String>();\r
+            timeAndSelfVariables = new ArrayList<String>();\r
+            if(allowedVariables != null && !allowedVariables.isDisposed()) {\r
+                TableItem[] connectedVariables = allowedVariables.getItems();\r
+                for(TableItem ti : connectedVariables) {\r
+                    // The status of the variable is determined using the color of its table item :(\r
+                    if (ExpressionUtils.variableTimeAndSelfColor(display).equals(ti.getForeground())) {\r
+                        this.timeAndSelfVariables.add(ti.getText());\r
+                    } else {\r
+                        this.variables.add(ti.getText());\r
+                    }\r
+                    \r
+                }\r
+            }\r
+            Collections.sort(variables);\r
+            Collections.sort(timeAndSelfVariables);\r
+        }\r
+       }\r
+       \r
+       /**\r
+        * Create CompletionProposals of the variables and add them to array.\r
+        * @param array result array of CompletionProposals\r
+        * @param display display using this CompletionProcessor\r
+        * @param token current token\r
+        * @param offset an offset within the document for which completions should be computed\r
+        */\r
+       private void addVariables(ArrayList<ICompletionProposal> array, Display display, String token, int offset) {\r
+           Image imageVariable = ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/variable.png")).createImage(display);\r
+        Image imageVariableGray = ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/variableGray.png")).createImage(display);\r
+        \r
+        for (String variable : variables) {\r
+            if (token.length() == 0 || variable.toUpperCase().startsWith(token.toUpperCase())) {\r
+                array.add(new CompletionProposal(variable, \r
+                        offset - token.length(),\r
+                        token.length(), \r
+                        variable.length(), \r
+                        imageVariable, \r
+                        variable, \r
+                        null/*new ContextInformation("ContextInformation1", "ContextInformation2")*/, \r
+                        ""/*"additional Proposal Info"*/));\r
+            }   \r
+        }\r
+        for (String variable : timeAndSelfVariables) {\r
+            if (token.length() == 0 || variable.toUpperCase().startsWith(token.toUpperCase())) {\r
+                array.add(new CompletionProposal(variable, \r
+                        offset - token.length(),\r
+                        token.length(), \r
+                        variable.length(), \r
+                        imageVariableGray, \r
+                        variable, \r
+                        null/*new ContextInformation("ContextInformation1", "ContextInformation2")*/, \r
+                        ""/*"additional Proposal Info"*/));\r
+            }   \r
+        }\r
+       }\r
+       \r
+       /**\r
+     * Create CompletionProposals of the functions and add them to array.\r
+     * @param array result array of CompletionProposals\r
+     * @param display display using this CompletionProcessor\r
+     * @param token current token\r
+     * @param offset an offset within the document for which completions should be computed\r
+     */\r
+       private void addFunctions(ArrayList<ICompletionProposal> array, Display display, String token, int offset) {\r
+           // Parameters don't have functions\r
+           if (functions == null)\r
+               return;\r
+           \r
+           // Create CompletionProposals out of Functions\r
+        for (Function function : functions) {\r
+            if (token.length() == 0 || function.getName().toUpperCase().startsWith(token.toUpperCase())) {\r
+                Image image = Function.getImage(display, function);\r
+                array.add(new CompletionProposal(\r
+                        function.getName() + "(" + function.getParameterList() + ")", \r
+                        offset - token.length(),\r
+                        token.length(), \r
+                        function.getName().length() + 1,\r
+                        image, \r
+                        function.getName() + "(" + function.getParameterList() + ")", \r
+                        null/*new ContextInformation("ContextInformation1", "ContextInformation2")*/, \r
+                        ""/*"additional Proposal Info"*/));\r
+            }   \r
+        }\r
+       }\r
+       \r
+       /**\r
+     * Collect all matching proposals\r
+     * @param display display using this CompletionProcessor\r
+     * @param token current token\r
+     * @param offset an offset within the document for which completions should be computed\r
+     * @return Array of matching proposals\r
+     */\r
+    private ICompletionProposal[] collectProposals(Display display, String token, int offset) {\r
+           ArrayList<ICompletionProposal> resultArray = new ArrayList<ICompletionProposal>();\r
+        \r
+           // Find variables and functions and create CompletionProposals out of them.\r
+           findVariables(display);\r
+           addVariables(resultArray, display, token, offset);\r
+           addFunctions(resultArray, display, token, offset);\r
\r
+           ICompletionProposal[] result = new ICompletionProposal[resultArray.size()];\r
                for (int i = 0; i < result.length; ++i) {\r
                        result[i] = resultArray.get(i);\r
                }\r
@@ -135,11 +177,12 @@ public class CompletionProcessor implements IContentAssistProcessor {
        public ICompletionProposal[] computeCompletionProposals(\r
                        ITextViewer viewer, int offset) {\r
                String equation = viewer.getDocument().get();\r
+               Display display = viewer.getTextWidget().getDisplay();\r
 \r
                if (equation.length() == 0 \r
                                || offset == 0\r
                                || Character.isWhitespace(equation.charAt(offset - 1))) {\r
-                       return collectProposals("", offset);\r
+                       return collectProposals(display, "", offset);\r
                }\r
                \r
                equation = equation.substring(0, offset);\r
@@ -147,29 +190,35 @@ public class CompletionProcessor implements IContentAssistProcessor {
                // Split into tokens on whitespace characters\r
                String[] tokens = equation.split("[\\s]");\r
                if (tokens.length == 0) {\r
-                       return collectProposals("", offset);\r
+                       return collectProposals(display, "", offset);\r
                }\r
                String token = tokens[tokens.length - 1];\r
                \r
                // If a '+', '-', etc. character is in the end, return all. \r
            if (allowedConnectedCharactersRegExp.indexOf(token.charAt(token.length() - 1)) != -1) {\r
-               return collectProposals("", offset);\r
+               return collectProposals(display, "", offset);\r
            }\r
            \r
            // Split the last token on '+', '-', etc. characters\r
         String tokensOfLastToken[] = token.split(allowedConnectedCharactersRegExp);\r
                if (tokensOfLastToken.length == 0) {\r
-                       return collectProposals("", offset);\r
+                       return collectProposals(display, "", offset);\r
                }\r
                token = tokensOfLastToken[tokensOfLastToken.length - 1];\r
                //System.out.println(token + "\noffset = " + offset);\r
 \r
-               return collectProposals(token, offset);\r
+               return collectProposals(display, token, offset);\r
        }\r
 \r
        @Override\r
        public IContextInformation[] computeContextInformation(\r
                        ITextViewer viewer, int offset) {\r
+\r
+           /*IContextInformation[] result = new IContextInformation[1];\r
+        for (int i = 0; i < result.length; ++i) {\r
+            result[i] = new ContextInformation("String1", "String2");\r
+        }\r
+        return result;*/\r
                return null;\r
        }\r
 \r
@@ -180,6 +229,7 @@ public class CompletionProcessor implements IContentAssistProcessor {
 \r
        @Override\r
        public char[] getContextInformationAutoActivationCharacters() {\r
+           //return allowedCharacters;\r
                return null;\r
        }\r
 \r
diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/properties/widgets/expressions/Function.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/properties/widgets/expressions/Function.java
new file mode 100644 (file)
index 0000000..902c24f
--- /dev/null
@@ -0,0 +1,192 @@
+package org.simantics.sysdyn.ui.properties.widgets.expressions;\r
+\r
+import java.util.ArrayList;\r
+\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+import org.eclipse.swt.graphics.Device;\r
+import org.eclipse.swt.graphics.Image;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.request.ObjectsWithType;\r
+import org.simantics.db.common.utils.ListUtils;\r
+import org.simantics.db.common.utils.NameUtils;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.request.Read;\r
+import org.simantics.layer0.Layer0;\r
+import org.simantics.sysdyn.SysdynResource;\r
+import org.simantics.sysdyn.ui.Activator;\r
+import org.simantics.ui.SimanticsUI;\r
+\r
+\r
+/**\r
+ * Class to store function name, type, and parameters. \r
+ * \r
+ * @author Tuomas Miettinen\r
+ *\r
+ */\r
+public class Function implements Comparable<Function>{\r
+\r
+    private final String name;\r
+    private final Type type;\r
+    private final String parameterList;\r
+    \r
+    public enum Type {\r
+        USER_DEFINED,\r
+        SHARED,\r
+        VENSIM,\r
+        SYSDYN,\r
+        MODELICA, \r
+        MODELICA_ARRAY \r
+    }\r
+    \r
+    /**\r
+     * Get the icon image for each type of Modelica function.\r
+     * @param device Device for which the image is used.\r
+     * @param function Modelica function\r
+     * @return Image to be shown e.g. in assistive text feed and ShortcutTab\r
+     */\r
+    public static Image getImage(Device device, Function function) {\r
+        switch (function.getType()) {\r
+            case USER_DEFINED:\r
+                return ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/function.png")).createImage(device);\r
+            case SHARED:\r
+                return ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/functionLink.png")).createImage(device);\r
+            case VENSIM:\r
+                return ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/vensimFunction.png")).createImage(device);\r
+            case SYSDYN:\r
+                return ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/sysdynFunction.png")).createImage(device);\r
+            case MODELICA:\r
+                return ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/modelicaFunction.png")).createImage(device);\r
+            case MODELICA_ARRAY:\r
+                return ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getResource("icons/modelicaArrayFunction.png")).createImage(device);\r
+            default:\r
+                return null;\r
+        }\r
+    }\r
+    \r
+    public Function(String name, String parameterList, Type type){\r
+        this.name = new String(name);\r
+        this.type = type;\r
+        if (parameterList != null)\r
+            this.parameterList = new String(parameterList);\r
+        else\r
+            this.parameterList = new String("");\r
+    }\r
+    \r
+    public String getParameterList() {\r
+        return parameterList;\r
+    }\r
+\r
+    public String getName() {\r
+        return name;\r
+    }\r
+    \r
+    public Type getType() {\r
+        return type;\r
+    }\r
+    \r
+    @Override\r
+    public int compareTo(Function f) {\r
+        // Sorting is done first in the order of Types and then alphabetically.\r
+        int typeCompare = type.compareTo(f.getType());\r
+        return typeCompare != 0 ? typeCompare : name.compareTo(f.getName());\r
+    }\r
+    \r
+    /**\r
+     * Get Modelica function parameters\r
+     * @param graph\r
+     * @param sr \r
+     * @param r Resource of the Modelica function\r
+     * @return String in which the paramters are ", " delimited\r
+     * @throws DatabaseException\r
+     */\r
+    private static String getFunctionInputs(ReadGraph graph, SysdynResource sr, Resource r) throws DatabaseException {\r
+        Resource inputs = graph.getPossibleObject(r, sr.SysdynModelicaFunction_inputs);\r
+        String inputStr = null;\r
+        if (inputs != null) {\r
+            for (Resource input : ListUtils.toList(graph, inputs)) {\r
+                String inputName = null;\r
+                if (graph.isInstanceOf(input, sr.SysdynModelicaFunction_VariableLengthInput)) {\r
+                    inputName = "";\r
+                    Resource shownLabels = graph.getPossibleObject(\r
+                            input, \r
+                            sr.SysdynModelicaFunction_VariableLengthInput_shownLabels);\r
+                    if (shownLabels != null) {\r
+                        for (Resource label : ListUtils.toList(graph, shownLabels)) {\r
+                            inputName += NameUtils.getSafeName(graph, label);\r
+                            inputName += ", ";\r
+                        }\r
+                    }\r
+                    inputName += "...";\r
+                } else {\r
+                    inputName = NameUtils.getSafeName(graph, input);\r
+                }\r
+                if (inputStr == null)\r
+                    inputStr = new String(inputName);\r
+                else\r
+                    inputStr += ", " + inputName;\r
+            }\r
+        }\r
+        return inputStr;\r
+    }\r
+\r
+    /**\r
+     * Get all (atm. only built-in) Modelica functions.\r
+     * @return ArrayList containing all functions.\r
+     */\r
+    public static ArrayList<Function> getAllFunctions() {\r
+        ArrayList<Function> result = null;\r
+        \r
+        //Finding functions\r
+        try {\r
+             result = SimanticsUI.getSession().syncRequest(new Read<ArrayList<Function>>() {\r
+                @Override\r
+                public ArrayList<Function> perform(ReadGraph graph)\r
+                        throws DatabaseException {\r
+                    SysdynResource sr = SysdynResource.getInstance(graph);\r
+                    Layer0 l0 = Layer0.getInstance(graph);\r
+                    ArrayList<Function> functions = new ArrayList<Function>();\r
+                    \r
+                    // Add Sysdyn functions\r
+                    Resource functionLibrary = graph.getPossibleResource(SysdynResource.URIs.Built$in_Functions);\r
+                    for(Resource r : graph.syncRequest(new ObjectsWithType(functionLibrary, l0.ConsistsOf, sr.SysdynModelicaFunction))) {\r
+                        String name = NameUtils.getSafeName(graph, r);\r
+                        String inputStr = getFunctionInputs(graph, sr, r);\r
+                        functions.add(new Function(name, inputStr, Type.SYSDYN));\r
+                    }\r
+                    \r
+                    // Add Vensim functions\r
+                    Resource subFunctionLibrary = graph.getPossibleResource(SysdynResource.URIs.Built$in_Functions_Vensim_Functions);\r
+                    for(Resource r : graph.syncRequest(new ObjectsWithType(subFunctionLibrary, l0.ConsistsOf, sr.SysdynModelicaFunction))) {\r
+                        String name = NameUtils.getSafeName(graph, r);\r
+                        String inputStr = getFunctionInputs(graph, sr, r);\r
+                        functions.add(new Function(name, inputStr, Type.VENSIM));\r
+                    }\r
+                    \r
+                    // Add Modelica functions\r
+                    subFunctionLibrary = graph.getPossibleResource(SysdynResource.URIs.Built$in_Functions_Modelica_Functions);\r
+                    for(Resource r : graph.syncRequest(new ObjectsWithType(subFunctionLibrary, l0.ConsistsOf, sr.SysdynModelicaFunction))) {\r
+                        String name = NameUtils.getSafeName(graph, r);\r
+                        String inputStr = getFunctionInputs(graph, sr, r);\r
+                        functions.add(new Function(name, inputStr, Type.MODELICA));\r
+                    }\r
+                    \r
+                    // Add Modelica array functions\r
+                    subFunctionLibrary = graph.getPossibleResource(SysdynResource.URIs.Built$in_Functions_Modelica_Array_Functions);\r
+                    for(Resource r : graph.syncRequest(new ObjectsWithType(subFunctionLibrary, l0.ConsistsOf, sr.SysdynModelicaFunction))) {\r
+                        String name = NameUtils.getSafeName(graph, r);\r
+                        String inputStr = getFunctionInputs(graph, sr, r);\r
+                        functions.add(new Function(name, inputStr, Type.MODELICA_ARRAY));\r
+                    }\r
+                    \r
+                    return functions;\r
+                }\r
+            });\r
+        }\r
+        catch (DatabaseException e) {\r
+            e.printStackTrace();\r
+        }\r
+        \r
+        return result;\r
+    }\r
+}\r
index 2d0cb58d077c624ade9f338a04f65dfe5434aff4..b9fb5d8cd640ca8fec62524905dd7dbc18545498 100644 (file)
@@ -130,6 +130,13 @@ public class FunctionCodeWidget implements Widget {
                                public String perform(ReadGraph graph) throws DatabaseException {\r
                                        String code = graph.getPossibleRelatedValue(\r
                                                        function, SysdynResource.getInstance(graph).SysdynModelicaFunction_modelicaFunctionCode);\r
+                                       if (code == null) {\r
+                                           code = graph.getPossibleRelatedValue(\r
+                                                   function, SysdynResource.getInstance(graph).SysdynModelicaFunction_modelicaFunctionInterface);\r
+                                           if (code == null) {\r
+                               code = new String("");\r
+                           }\r
+                                       }\r
                                        return code;\r
                                }\r
                                \r
index e186e3f1aa5960f351dd93e5a48f27510c3eb6df..a7a28c17eb97dc3c0ca827c4a1965c0a5386018b 100644 (file)
@@ -26,6 +26,7 @@ import java.util.regex.Pattern;
 import org.eclipse.jface.text.Position;\r
 import org.eclipse.swt.custom.StyledText;\r
 import org.eclipse.swt.graphics.Color;\r
+import org.eclipse.swt.graphics.Device;\r
 import org.eclipse.swt.widgets.Table;\r
 import org.eclipse.swt.widgets.TableItem;\r
 import org.simantics.db.ReadGraph;\r
@@ -76,6 +77,36 @@ public class ExpressionUtils {
             return false;\r
         }\r
     }\r
+    \r
+    /**\r
+     * Color for a variable found in an expression field, used in shortcut tab.\r
+     * This is a bit silly means of communicating the state of a variable using its color.\r
+     * @param device Device in which the color is used.\r
+     * @return Color for such variable.\r
+     */\r
+    static public Color variableFoundColor(Device device) {\r
+        return new Color(device, 0,0,0);\r
+    }\r
+\r
+    /**\r
+     * Color for a variable not found in an expression field, used in shortcut tab.\r
+     * This is a bit silly means of communicating the state of a variable using its color.\r
+     * @param device Device in which the color is used.\r
+     * @return Color for such variable.\r
+     */\r
+    static public Color variableNotFoundColor(Device device) {\r
+        return new Color(device, 255,125,0);\r
+    }\r
+\r
+    /**\r
+     * Color for a variable itself and for the time variable, used in shortcut tab.\r
+     * This is a bit silly means of communicating the state of a variable using its color.\r
+     * @param device Device in which the color is used.\r
+     * @return Color for such variable.\r
+     */\r
+    static public Color variableTimeAndSelfColor(Device device) {\r
+        return new Color(device, 127,127,127);\r
+    }\r
 \r
     /**\r
      * Validates the expressionfield of a given IExpression\r
@@ -266,11 +297,11 @@ public class ExpressionUtils {
                 TableItem[] connectedVariables = variableTable.getItems();\r
                 for(TableItem ti : connectedVariables) {\r
                     if (ti.getText().equals("time") || ti.getText().equals(selfName)) {\r
-                        ti.setForeground(new Color(ti.getDisplay(), 127,127,127));\r
+                        ti.setForeground(variableTimeAndSelfColor(ti.getDisplay()));\r
                     } else if (parsingSucceeded && !variables.contains(ti.getText())) {\r
-                        ti.setForeground(new Color(ti.getDisplay(), 255,125,0));\r
+                        ti.setForeground(variableNotFoundColor(ti.getDisplay()));\r
                     } else if (parsingSucceeded) {\r
-                        ti.setForeground(new Color(ti.getDisplay(), 0, 0, 0));\r
+                        ti.setForeground(variableFoundColor(ti.getDisplay()));\r
                         variables.remove(ti.getText());\r
                     }\r
                 }\r
diff --git a/org.simantics.sysdyn/ModelicaParser.html b/org.simantics.sysdyn/ModelicaParser.html
new file mode 100644 (file)
index 0000000..b33e433
--- /dev/null
@@ -0,0 +1,737 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+<TITLE>BNF for ModelicaParser.jj </TITLE>
+</HEAD>
+<BODY>
+<H1 ALIGN=CENTER>BNF for ModelicaParser.jj </H1>
+<H2 ALIGN=CENTER>TOKENS</H2>
+<TABLE>
+ <!-- Special token -->
+ <TR>
+  <TD>
+<PRE>
+/*** Lexer *********************************************************/</PRE>
+  </TD>
+ </TR>
+ <!-- Token -->
+ <TR>
+  <TD>
+   <PRE>
+&lt;DEFAULT&gt; SKIP : {
+&lt;WHITESPACE: " " | "\n" | "\r" | "\t"&gt;
+| &lt;COMMENT1: "/*" (~["*"] | "*" ~["/"])* "*/"&gt;
+| &lt;COMMENT2: "//" (~["\n"])*&gt;
+}
+
+   </PRE>
+  </TD>
+ </TR>
+ <!-- Token -->
+ <TR>
+  <TD>
+   <PRE>
+&lt;DEFAULT&gt; TOKEN : {
+"algorithm"
+| "discrete"
+| "false"
+| "model"
+| "redeclare"
+| "and"
+| "each"
+| "final"
+| "not"
+| "replaceable"
+| "annotation"
+| "else"
+| "flow"
+| "operator"
+| "return"
+| "assert"
+| "elseif"
+| "for"
+| "or"
+| "stream"
+| "block"
+| "elsewhen"
+| "function"
+| "outer"
+| "then"
+| "break"
+| "encapsulated"
+| "if"
+| "output"
+| "true"
+| "class"
+| "end"
+| "import"
+| "package"
+| "type"
+| "connect"
+| "enumeration"
+| "in"
+| "parameter"
+| "when"
+| "connector"
+| "equation"
+| "initial"
+| "partial"
+| "while"
+| "constant"
+| "expandable"
+| "inner"
+| "protected"
+| "within"
+| "constrainedby"
+| "extends"
+| "input"
+| "public"
+| "der"
+| "external"
+| "loop"
+| "record"
+| "("
+| ")"
+| "{"
+| "}"
+| "["
+| "]"
+| "."
+| ":"
+| ";"
+| ","
+| "&lt;"
+| "&lt;="
+| "&gt;"
+| "&gt;="
+| "=="
+| "&lt;&gt;"
+| "+"
+| "-"
+| ".+"
+| ".-"
+| "*"
+| "/"
+| ".*"
+| "./"
+| "^"
+| ".^"
+| "="
+| ":="
+| &lt;IDENT: ["a"-"z","A"-"Z","_"] (["a"-"z","A"-"Z","_","0"-"9"])*&gt;
+| &lt;STRING: "\"" (~["\"","\\","\n"] | "\\" ~["\n"])* "\""&gt; : {
+| &lt;UNSIGNED_INTEGER: (["0"-"9"])+&gt;
+| &lt;UNSIGNED_NUMBER: &lt;UNSIGNED_INTEGER&gt; "." (&lt;UNSIGNED_INTEGER&gt;)? (["e","E"] &lt;UNSIGNED_INTEGER&gt;)? | "." &lt;UNSIGNED_INTEGER&gt; (["e","E"] &lt;UNSIGNED_INTEGER&gt;)? | &lt;UNSIGNED_INTEGER&gt; ["e","E"] &lt;UNSIGNED_INTEGER&gt;&gt;
+}
+
+   </PRE>
+  </TD>
+ </TR>
+</TABLE>
+<H2 ALIGN=CENTER>NON-TERMINALS</H2>
+<TABLE>
+ <!-- Special token -->
+ <TR>
+  <TD>
+<PRE>
+/*** Parser ********************************************************/
+
+// https://javacc.dev.java.net/doc/javaccgrm.html\r
+// add_op -> add_op()\r
+// [ add_op ] -> ( add_op() )?\r
+// { add_op term } -> ( add_op() term() )*\r
+</PRE>
+  </TD>
+ </TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod1">parse</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod2">stored_definition</A> &lt;EOF&gt;</TD>
+</TR>
+ <!-- Special token -->
+ <TR>
+  <TD>
+<PRE>
+/*** Stored Definition - Within ************************************/</PRE>
+  </TD>
+ </TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod2">stored_definition</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( "within" ( <A HREF="#prod3">name</A> )? ";" )? ( ( "final" )? <A HREF="#prod4">class_definition</A> ";" )*</TD>
+</TR>
+ <!-- Special token -->
+ <TR>
+  <TD>
+<PRE>
+/*** Class Definition **********************************************/</PRE>
+  </TD>
+ </TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod4">class_definition</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( "encapsulated" )? ( "partial" )? ( "class" | "model" | "record" | "block" | ( "expandable" )? "connector" | "type" | "package" | "function" | "operator" | "operator function" | "operator record" ) <A HREF="#prod5">class_specifier</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod5">class_specifier</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>&lt;IDENT&gt; <A HREF="#prod6">string_comment</A> <A HREF="#prod7">composition</A> "end" &lt;IDENT&gt;</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>&lt;IDENT&gt; "=" <A HREF="#prod8">base_prefix</A> <A HREF="#prod3">name</A> ( <A HREF="#prod9">array_subscripts</A> )? ( <A HREF="#prod10">class_modification</A> )? <A HREF="#prod11">comment</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>&lt;IDENT&gt; "=" "enumeration" "(" ( ( <A HREF="#prod12">enum_list</A> )? | ":" ) ")" <A HREF="#prod11">comment</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>&lt;IDENT&gt; "=" "der" "(" <A HREF="#prod3">name</A> "," &lt;IDENT&gt; ( "," &lt;IDENT&gt; )* ")" <A HREF="#prod11">comment</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"extends" &lt;IDENT&gt; ( <A HREF="#prod10">class_modification</A> )? <A HREF="#prod6">string_comment</A> <A HREF="#prod7">composition</A> "end" &lt;IDENT&gt;</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod8">base_prefix</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod13">type_prefix</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod12">enum_list</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod14">enumeration_literal</A> ( "," <A HREF="#prod14">enumeration_literal</A> )*</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod14">enumeration_literal</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>&lt;IDENT&gt; <A HREF="#prod11">comment</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod15">parse_composition</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod7">composition</A> &lt;EOF&gt;</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod7">composition</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod16">element_list</A> ( "public" <A HREF="#prod16">element_list</A> | "protected" <A HREF="#prod16">element_list</A> | <A HREF="#prod17">equation_section</A> | <A HREF="#prod18">algorithm_section</A> )* ( "external" ( <A HREF="#prod19">language_specification</A> )? ( <A HREF="#prod20">external_function_call</A> )? ( <A HREF="#prod21">annotation</A> )? ";" )? ( <A HREF="#prod21">annotation</A> ";" )?</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod19">language_specification</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>&lt;STRING&gt;</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod20">external_function_call</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod22">component_reference</A> "=" )? &lt;IDENT&gt; "(" ( <A HREF="#prod23">expression_list</A> )? ")"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod16">element_list</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod24">element</A> ";" )*</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod24">element</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod25">import_clause</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod26">extends_clause</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( "redeclare" )? ( "final" )? ( "inner" )? ( "outer" )? ( ( <A HREF="#prod4">class_definition</A> | <A HREF="#prod27">component_clause</A> ) | "replaceable" ( <A HREF="#prod4">class_definition</A> | <A HREF="#prod27">component_clause</A> ) ( <A HREF="#prod28">constraining_clause</A> <A HREF="#prod11">comment</A> )? )</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod25">import_clause</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"import" ( &lt;IDENT&gt; "=" <A HREF="#prod3">name</A> | <A HREF="#prod3">name</A> ( "." "*" )? ) <A HREF="#prod11">comment</A></TD>
+</TR>
+ <!-- Special token -->
+ <TR>
+  <TD>
+<PRE>
+/*** Extends *******************************************************/</PRE>
+  </TD>
+ </TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod26">extends_clause</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"extends" <A HREF="#prod3">name</A> ( <A HREF="#prod10">class_modification</A> )? ( <A HREF="#prod21">annotation</A> )?</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod28">constraining_clause</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"constrainedby" <A HREF="#prod3">name</A> ( <A HREF="#prod10">class_modification</A> )?</TD>
+</TR>
+ <!-- Special token -->
+ <TR>
+  <TD>
+<PRE>
+/*** Component Clause **********************************************/</PRE>
+  </TD>
+ </TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod27">component_clause</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod13">type_prefix</A> ) <A HREF="#prod29">type_specifier</A> ( <A HREF="#prod9">array_subscripts</A> )? <A HREF="#prod30">component_list</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod13">type_prefix</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( "flow" | "stream" )? ( "discrete" | "parameter" | "constant" )? ( "output" | "input" )?</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod29">type_specifier</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod3">name</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod30">component_list</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod31">component_declaration</A> ( "," <A HREF="#prod31">component_declaration</A> )*</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod31">component_declaration</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod32">declaration</A> ( <A HREF="#prod33">conditional_attribute</A> )? <A HREF="#prod11">comment</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod33">conditional_attribute</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"if" <A HREF="#prod34">expression</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod32">declaration</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>&lt;IDENT&gt; ( <A HREF="#prod9">array_subscripts</A> )? ( <A HREF="#prod35">modification</A> )?</TD>
+</TR>
+ <!-- Special token -->
+ <TR>
+  <TD>
+<PRE>
+/*** Modification **********************************************/</PRE>
+  </TD>
+ </TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod35">modification</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod10">class_modification</A> ( "=" <A HREF="#prod34">expression</A> )?</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"=" <A HREF="#prod34">expression</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>":=" <A HREF="#prod34">expression</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod10">class_modification</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"(" ( <A HREF="#prod36">argument_list</A> )? ")"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod36">argument_list</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod37">argument</A> ( "," <A HREF="#prod37">argument</A> )*</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod37">argument</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod38">element_modification_or_replaceable</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod39">element_redeclaration</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod38">element_modification_or_replaceable</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( "each" )? ( "final" )? ( <A HREF="#prod40">element_modification</A> | <A HREF="#prod41">element_replaceable</A> )</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod40">element_modification</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod3">name</A> ( <A HREF="#prod35">modification</A> )? <A HREF="#prod6">string_comment</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod39">element_redeclaration</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"redeclare" ( "each" )? ( "final" )? ( ( <A HREF="#prod4">class_definition</A> | <A HREF="#prod42">component_clause1</A> ) | <A HREF="#prod41">element_replaceable</A> )</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod41">element_replaceable</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"replaceable" ( <A HREF="#prod4">class_definition</A> | <A HREF="#prod42">component_clause1</A> ) ( <A HREF="#prod28">constraining_clause</A> )?</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod42">component_clause1</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod13">type_prefix</A> <A HREF="#prod29">type_specifier</A> <A HREF="#prod43">component_declaration1</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod43">component_declaration1</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod32">declaration</A> <A HREF="#prod11">comment</A></TD>
+</TR>
+ <!-- Special token -->
+ <TR>
+  <TD>
+<PRE>
+/*** Equations *************************************************/</PRE>
+  </TD>
+ </TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod17">equation_section</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( "initial" )? "equation" ( <A HREF="#prod44">equation</A> ";" )*</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod18">algorithm_section</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( "initial" )? "algorithm" ( <A HREF="#prod45">statement</A> ";" )*</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod44">equation</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod46">simple_expression</A> "=" <A HREF="#prod34">expression</A> | <A HREF="#prod47">if_equation</A> | <A HREF="#prod48">for_equation</A> | <A HREF="#prod49">connect_clause</A> | <A HREF="#prod50">when_equation</A> | &lt;IDENT&gt; <A HREF="#prod51">function_call_args</A> ) <A HREF="#prod11">comment</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod45">statement</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod22">component_reference</A> ( ":=" <A HREF="#prod34">expression</A> | <A HREF="#prod51">function_call_args</A> ) | "(" <A HREF="#prod52">output_expression_list</A> ")" ":=" <A HREF="#prod22">component_reference</A> <A HREF="#prod51">function_call_args</A> | "break" | "return" | <A HREF="#prod53">if_statement</A> | <A HREF="#prod54">for_statement</A> | <A HREF="#prod55">while_statement</A> | <A HREF="#prod56">when_statement</A> ) <A HREF="#prod11">comment</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod47">if_equation</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"if" <A HREF="#prod34">expression</A> "then" ( <A HREF="#prod44">equation</A> ";" )* ( "elseif" <A HREF="#prod34">expression</A> "then" ( <A HREF="#prod44">equation</A> ";" )* )* ( "else" ( <A HREF="#prod44">equation</A> ";" )* )? "end" "if"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod53">if_statement</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"if" <A HREF="#prod34">expression</A> "then" ( <A HREF="#prod45">statement</A> ";" )* ( "elseif" <A HREF="#prod34">expression</A> "then" ( <A HREF="#prod45">statement</A> ";" )* )* ( "else" ( <A HREF="#prod45">statement</A> ";" )* )? "end" "if"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod48">for_equation</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"for" <A HREF="#prod57">for_indices</A> "loop" ( <A HREF="#prod44">equation</A> ";" )* "end" "for"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod54">for_statement</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"for" <A HREF="#prod57">for_indices</A> "loop" ( <A HREF="#prod45">statement</A> ";" )* "end" "for"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod57">for_indices</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod58">for_index</A> ( "," <A HREF="#prod58">for_index</A> )*</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod58">for_index</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>&lt;IDENT&gt; ( "in" <A HREF="#prod34">expression</A> )?</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod55">while_statement</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"while" <A HREF="#prod34">expression</A> "loop" ( <A HREF="#prod45">statement</A> ";" )* "end" "while"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod50">when_equation</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"when" <A HREF="#prod34">expression</A> "then" ( <A HREF="#prod44">equation</A> ";" )* ( "elsewhen" <A HREF="#prod34">expression</A> "then" ( <A HREF="#prod44">equation</A> ";" )* )* "end" "when"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod56">when_statement</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"when" <A HREF="#prod34">expression</A> "then" ( <A HREF="#prod45">statement</A> ";" )* ( "elsewhen" <A HREF="#prod34">expression</A> "then" ( <A HREF="#prod45">statement</A> ";" )* )* "end" "when"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod49">connect_clause</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"connect" "(" <A HREF="#prod22">component_reference</A> "," <A HREF="#prod22">component_reference</A> ")"</TD>
+</TR>
+ <!-- Special token -->
+ <TR>
+  <TD>
+<PRE>
+/*** Expressions ***************************************************/</PRE>
+  </TD>
+ </TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod59">expr</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod46">simple_expression</A> &lt;EOF&gt;</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"if" <A HREF="#prod34">expression</A> "then" <A HREF="#prod34">expression</A> ( "elseif" <A HREF="#prod34">expression</A> "then" <A HREF="#prod34">expression</A> )* "else" <A HREF="#prod34">expression</A> &lt;EOF&gt;</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod34">expression</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod46">simple_expression</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"if" <A HREF="#prod34">expression</A> "then" <A HREF="#prod34">expression</A> ( "elseif" <A HREF="#prod34">expression</A> "then" <A HREF="#prod34">expression</A> )* "else" <A HREF="#prod34">expression</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod46">simple_expression</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod60">logical_expression</A> ( ":" <A HREF="#prod60">logical_expression</A> ( ":" <A HREF="#prod60">logical_expression</A> )? )?</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod60">logical_expression</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod61">logical_term</A> ( "or" <A HREF="#prod61">logical_term</A> )*</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod61">logical_term</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod62">logical_factor</A> ( "and" <A HREF="#prod62">logical_factor</A> )*</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod62">logical_factor</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( "not" )? <A HREF="#prod63">relation</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod63">relation</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod64">arithmetic_expression</A> ( <A HREF="#prod65">rel_op</A> <A HREF="#prod64">arithmetic_expression</A> )?</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod65">rel_op</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"&lt;"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"&lt;="</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"&gt;"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"&gt;="</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"=="</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"&lt;&gt;"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod64">arithmetic_expression</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod66">add_op</A> )? <A HREF="#prod67">term</A> ( <A HREF="#prod66">add_op</A> <A HREF="#prod67">term</A> )*</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod66">add_op</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"+"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"-"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>".+"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>".-"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod67">term</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod68">factor</A> ( <A HREF="#prod69">mul_op</A> <A HREF="#prod68">factor</A> )*</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod69">mul_op</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"*"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"/"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>".*"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"./"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod68">factor</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod70">primary</A> ( "^" | ".^" <A HREF="#prod70">primary</A> )?</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod70">primary</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>&lt;UNSIGNED_NUMBER&gt;</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>&lt;UNSIGNED_INTEGER&gt;</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>&lt;STRING&gt;</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"false"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"true"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod3">name</A> | "der" | "initial" ) <A HREF="#prod51">function_call_args</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod22">component_reference</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"(" <A HREF="#prod52">output_expression_list</A> ")"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"[" <A HREF="#prod23">expression_list</A> ( ";" <A HREF="#prod23">expression_list</A> )* "]"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"{" <A HREF="#prod71">function_arguments</A> "}"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"end"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod3">name</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( "." )? &lt;IDENT&gt; ( "." &lt;IDENT&gt; )*</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod22">component_reference</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( "." )? &lt;IDENT&gt; ( <A HREF="#prod9">array_subscripts</A> )? ( "." &lt;IDENT&gt; ( <A HREF="#prod9">array_subscripts</A> )? )*</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod51">function_call_args</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"(" ( <A HREF="#prod71">function_arguments</A> )? ")"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod71">function_arguments</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod34">expression</A> ( "," <A HREF="#prod71">function_arguments</A> | "for" <A HREF="#prod57">for_indices</A> )?</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod72">named_arguments</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod72">named_arguments</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod73">named_argument</A> ( "," <A HREF="#prod72">named_arguments</A> )?</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod73">named_argument</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>&lt;IDENT&gt; "=" <A HREF="#prod34">expression</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod52">output_expression_list</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod34">expression</A> )? ( "," ( <A HREF="#prod34">expression</A> )? )*</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod23">expression_list</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod34">expression</A> ( "," <A HREF="#prod34">expression</A> )*</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod9">array_subscripts</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"[" <A HREF="#prod74">subscript</A> ( "," <A HREF="#prod74">subscript</A> )* "]"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod74">subscript</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>":"</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>|</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod34">expression</A></TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod11">comment</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod6">string_comment</A> ( <A HREF="#prod21">annotation</A> )?</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod6">string_comment</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;STRING&gt; ( "+" &lt;STRING&gt; )* )?</TD>
+</TR>
+<TR>
+<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod21">annotation</A></TD>
+<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE>"annotation" <A HREF="#prod10">class_modification</A></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
index 097b51edce7cd4f7c73dc2448f84af81e2ff4904..1d79f4660605418abdfda10eacf449bf7b13ed2f 100644 (file)
@@ -259,7 +259,11 @@ public class FunctionUtils {
                SysdynResource sr = SysdynResource.getInstance(graph);\r
                for(Resource function : graph.syncRequest(new ObjectsWithType(library, l0.ConsistsOf, sr.SysdynModelicaFunction))) {\r
                        String name = NameUtils.getSafeName(graph, function);\r
-                       String functionCode = graph.getRelatedValue(function, sr.SysdynModelicaFunction_modelicaFunctionCode);\r
+                       // Built-in Modelica (array) functions have no function code and they don't need to be added explicitly.\r
+                       String functionCode = graph.getPossibleRelatedValue(function, sr.SysdynModelicaFunction_modelicaFunctionCode);\r
+                       if (functionCode == null) {\r
+                           continue;\r
+                       }\r
                        stream.println("function " + name);\r
                        stream.println(functionCode);\r
                        stream.println("end " + name + ";\n");\r
index cc155d083ca421778fddb58c724bb6386032184d..a739dad9240e145110f0800d05d4a4949c867e42 100644 (file)
@@ -196,34 +196,39 @@ void constraining_clause() : {
 }\r
 \r
 /*** Component Clause **********************************************/\r
-void component_clause() : {\r
+void component_clause() : { boolean isInput = false;\r
 } {\r
+  \r
 //     type_prefix type_specifier [ array_subscripts ] component_list\r
-       type_prefix() type_specifier() ( array_subscripts() )? component_list()\r
+        ( isInput = type_prefix() ) type_specifier() ( array_subscripts() )? component_list(isInput)\r
 }\r
 \r
-void type_prefix() : {\r
+boolean type_prefix() : { boolean isInput = false;\r
 } {\r
 //     [ flow | stream ]\r
 //     [ discrete | parameter | constant ] [ input | output ]\r
        ( "flow" | "stream" )?\r
-       ( "discrete" | "parameter" | "constant" )? ( "input" | "output" )?\r}\r
+       ( "discrete" | "parameter" | "constant" )?\r
+       ( "output" | "input" { isInput = true; } )?\r
+       {\r              return isInput;\r
+       }\r
+}\r
 \r
 void type_specifier() : {\r
 } {\r
        name()\r
 }\r
 \r
-void component_list() : {\r
+void component_list(boolean isInput) : {\r
 } {\r
 //     component_declaration { "," component_declaration }\r
-       component_declaration() ( "," component_declaration() )*\r
+       component_declaration(isInput) ( "," component_declaration(isInput) )*\r
 }\r
 \r
-void component_declaration() : {\r
+void component_declaration(boolean isInput) : {\r
 } {\r
 //     declaration [ conditional_attribute ] comment\r
-       declaration() ( conditional_attribute() )? comment()\r
+       declaration(isInput) ( conditional_attribute() )? comment()\r
 }\r
 \r
 void conditional_attribute() : {\r
@@ -231,10 +236,16 @@ void conditional_attribute() : {
        "if" expression()\r
 }\r
 \r
-void declaration() : {\r
+void declaration(boolean isInput) : { String input_variable = null;\r
 } {\r
 //     IDENT [ array_subscripts ] [ modification ]\r
-       <IDENT> ( array_subscripts() )? ( modification() )?\r
+       <IDENT> { if (isInput) input_variable = new String(token.image); }\r
+       ( array_subscripts() )?\r
+       ( modification() { input_variable = null; })?\r
+       {\r                \r
+               if (input_variable != null)\r            {\r
+                 //System.out.println("collect: " + input_variable);\r          }\r
+       }\r
 }\r
 \r
 /*** Modification **********************************************/\r
@@ -301,7 +312,7 @@ void component_clause1() : {
 \r
 void component_declaration1() : {\r
 } {\r
-       declaration() comment()\r
+       declaration(false) comment()\r
 }\r
 \r
 \r