summaryrefslogtreecommitdiffstats
path: root/scilab/modules/xcos/model/Xcos.xcore
blob: 14bc4529ed4151df56d72560d1e5d0d838c0a5a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
package org.scilab.modules.xcos

/* Encoded Scilab values */
class Binary
{
	/* RFC 2045 Base64 encoded double[] values (space separated) */
	String base64
}

/* A point is a position on the diagram */
class Point
{
	/* X coordinate */
	double x
	/* Y coordinate */
	double y
}

/* Rectangular coordinates of the object */
class Geometry
{
	/* X coordinate */
	double x
	/* Y coordinate */
	double y
	/* Height of the object */
	double height
	/* Width of the object */
	double width
}

/* The kind of a port */
enum PortKind
{
	in, out, ein, eout
}

/* Shared definition for both a Diagram and a SuperBlock (eg. a Block) */
abstract class Layer
{
	/* Scilab scripts added at current layer */
	String[] context
	/* contained objects */
	contains BaseObject[] child opposite parent
}

/* Shared definition for an object contained in a Layer */
abstract class BaseObject {
	/* Unique IDentifier : usually on the universally unique identifier (UUID) form */
	id String uid
	
	/* The diagram (to ease in memory representation) */
	refers Diagram[1..1] parentDiagram
	/* parent Layer to navigate back */
	container Layer[1..1] parent opposite child
}

/* A diagram is the top-level object of a model. It contains simulation parameters and the hierarchical data-flow and event-flow graphs. */
class Diagram extends Layer
{
	/* title of a diagram */
	String title
	/* Latest saved path */
	String path
	
	/* Simulation settings */
	contains SimulationConfig properties
	/* Simulation debug level */
	int debugLevel
	
	/* Version of the diagram */
	String version
}

/* Simulation settings */
class SimulationConfig
{
	/* Simulation final time (starting at 0) */
	double finalTime
	double absoluteTolerance
	double relativeTolerance
	double timeTolerance
	double deltaT
	double realtimeScale
	double solver
	double deltaH
}

/*  */
class Block extends BaseObject, Layer
{	
	contains Geometry geometry
	String description
	String label
	String style
	
	String interfaceFunction
	String[] expression
	contains Binary exprs
	
	int[] nzcross
	int[] nmode
	contains Binary equations
	
	String functionName
	int functionAPI
	boolean dependsOnU
	boolean dependsOnT
	char blocktype
	
	contains Port[] in
	contains Port[] out
	contains Port[] ein
	contains Port[] eout
	
	double[] rpar
	int[] ipar
	contains Binary opar
	
	double[] state
	double[] dstate
	contains Binary odstate
}

class Port
{	
	id String uid
	
	int[] datatype
	double firing
	
	refers Block sourceBlock
	PortKind kind
	boolean implicit
	refers Link connectedSignal
	
	String style
	String label
}

class Link extends BaseObject
{	
	refers Port sourcePort
	refers Port destinationPort
	
	contains Geometry geometry
	contains Point[] controlPoint
	
	String style
	String label
	double lineWidth
	double lineHeight
	int color
}

class Annotation extends BaseObject
{
	contains Geometry geometry
	String description
	String font
	String fontSize
	String style
}

/****************************************************************************************
 * An executable representation can be exported only if the diagram has been "compiled" *
 ****************************************************************************************/
 
/*
 * 
 */
class CompiledRepresentation
{
	
}