]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.databoard/src/org/simantics/databoard/standardTypes.dbt
Re-implement URIStringUtils escape and unescape using Unicode
[simantics/platform.git] / bundles / org.simantics.databoard / src / org / simantics / databoard / standardTypes.dbt
1 \r
2 type Limit = \r
3     | Nolimit \r
4     | Inclusive { value : Double } \r
5     | Exclusive { value : Double } \r
6     | InclusiveLong { value : Long } \r
7     | ExclusiveLong { value : Long }\r
8 \r
9 type Range = { lower : Limit, upper : Limit }\r
10 \r
11 type Component = { name : String, type : DataType }\r
12 type DataTypeDefinition = { name : String, type : DataType }\r
13 \r
14 type DataType =\r
15       | BooleanType  {}\r
16       | ByteType     { unit : Optional(String), range : Optional(Range) }\r
17       | IntegerType  { unit : Optional(String), range : Optional(Range) }\r
18       | LongType     { unit : Optional(String), range : Optional(Range) }\r
19       | FloatType    { unit : Optional(String), range : Optional(Range) }\r
20       | DoubleType   { unit : Optional(String), range : Optional(Range) }\r
21       | StringType   { pattern : Optional(String), mimeType : Optional(String), length : Optional(String) }\r
22       | RecordType   referable { referable : Boolean, components : Component[] }\r
23       | ArrayType    { componentType : DataType, length : Optional(Range) }\r
24       | MapType      { keyType : DataType, valueType : DataType }\r
25       | OptionalType { componentType : DataType }\r
26       | UnionType    UnionType\r
27       | VariantType  {}\r
28 \r
29 type UnionType = { components : Component[] }\r
30 \r
31 type UUID = { mostSigBits : Long, leastSigBits : Long }\r
32 type Void = {}\r
33 type URI = String\r
34 type LocalizedText = Map(String, String)\r
35 \r
36 type Interface = {\r
37        methodDefinitions : Map(MethodTypeDefinition, {})\r
38      }\r
39 type InterfaceDefinition = {\r
40        name : String,\r
41        type : Interface\r
42      }\r
43 type MethodType = {\r
44        requestType : DataType,\r
45       responseType : DataType,\r
46        errorType : UnionType\r
47      }\r
48 type MethodTypeDefinition = {\r
49        name : String,\r
50        type : MethodType\r
51      }\r
52 \r
53 \r
54 type Handshake = | Version0\r
55 type Version0 = {\r
56        recvMsgLimit : Integer,\r
57        sendMsgLimit : Integer,\r
58        methods : MethodTypeDefinition[]\r
59      }\r
60 type Message = | RequestHeader RequestHeader \r
61                | ResponseHeader ResponseHeader\r
62                | ExecutionError_ ExecutionError_\r
63                | Exception_ Exception_\r
64                | InvalidMethodError InvalidMethodError\r
65                | ResponseTooLarge ResponseTooLarge\r
66 type RequestHeader = {\r
67        requestId : Integer,\r
68        methodId : Integer\r
69      }\r
70 type ResponseHeader = {\r
71        requestId : Integer\r
72      }\r
73 type ExecutionError_ = {\r
74        requestId : Integer\r
75      }\r
76 type InvalidMethodError = {\r
77        requestId : Integer\r
78      }\r
79 type Exception_ = {\r
80        requestId : Integer,         \r
81        message : String\r
82      }\r
83 type ResponseTooLarge = {\r
84        requestId : Integer         \r
85      }\r
86 \r
87 type AccessorReference = | ArrayIndexReference     { childReference : Optional(AccessorReference), index : Integer }\r
88                          | KeyReference            { childReference : Optional(AccessorReference), key : Variant }\r
89                          | OptionalValueReference  { childReference : Optional(AccessorReference) }\r
90                          | FieldIndexReference     { childReference : Optional(AccessorReference), index : Integer }\r
91                          | FieldNameReference      { childReference : Optional(AccessorReference), fieldName : String }\r
92                          | TagReference            { childReference : Optional(AccessorReference)  }\r
93                          | TagIndexReference       { childReference : Optional(AccessorReference), tag : Integer  }\r
94                          | TagNameReference        { childReference : Optional(AccessorReference), tag : String }\r
95                          | VariantValueReference   { childReference : Optional(AccessorReference) }\r
96                          | LabelReference          { childReference : Optional(AccessorReference), label : String }\r
97 \r
98 type Event = | ArrayElementAdded     { reference : Optional( AccessorReference ), index : Integer, value : Optional( Variant ) }\r
99              | ArrayElementRemoved   { reference : Optional( AccessorReference ), index : Integer }\r
100              | MapEntryAdded         { reference : Optional( AccessorReference ), key : Variant, value : Optional( Variant ) }\r
101              | MapEntryRemoved       { reference : Optional( AccessorReference ), key : Variant }\r
102              | UnionValueAssigned    { reference : Optional( AccessorReference ), tag : Integer, newValue : Optional( Variant ) }\r
103              | OptionalValueAssigned { reference : Optional( AccessorReference ), newValue : Optional( Variant ) }\r
104              | OptionalValueRemoved  { reference : Optional( AccessorReference ) }\r
105              | ValueAssigned         { reference : Optional( AccessorReference ), newValue : Optional( Variant ) }\r
106              | InvalidatedEvent      { reference : Optional( AccessorReference ) }\r
107  \r
108 type ChangeSet = { events : Event[] }\r
109 \r
110 type InterestSet = | BooleanInterestSet  { notification : Boolean, value : Boolean }\r
111                    | ByteInterestSet     { notification : Boolean, value : Boolean }\r
112                    | IntegerInterestSet  { notification : Boolean, value : Boolean }\r
113                    | LongInterestSet     { notification : Boolean, value : Boolean }\r
114                    | FloatInterestSet    { notification : Boolean, value : Boolean }\r
115                    | DoubleInterestSet   { notification : Boolean, value : Boolean }\r
116                    | StringInterestSet   { notification : Boolean, value : Boolean }\r
117                    | RecordInterestSet   { notification : Boolean, notifications : Boolean[], value : Boolean, values : Boolean[] }\r
118                    | ArrayInterestSet    { notification : Boolean, notifications : Integer[], value : Boolean, values : Integer[] }\r
119                    | MapInterestSet      { notification : Boolean, notifications : Variant[], value : Boolean, values : Variant[], componentInterest : InterestSet, componentInterests : Map( Variant, InterestSet ) }\r
120                    | OptionalInterestSet { notification : Boolean, value : Boolean, componentInterest : InterestSet }\r
121                    | UnionInterestSet    { notification : Boolean, value : Boolean, componentInterests : InterestSet[] }\r
122                    | VariantInterestSet  { notification : Boolean, value : Boolean, componentInterest : InterestSet, completeComponent : Boolean }\r
123 \r
124 type Datasource = {\r
125         nodes : Map(Variant, Node)\r
126      }\r
127 type Node = {\r
128         id : Variant,\r
129         labels : LocalizedText,\r
130         children : Variant[],\r
131         value : Optional(Variant)\r
132      }\r
133 \r
134 type Instant = { \r
135          seconds : Long, \r
136          nanoSeconds : Integer(range=[0..999999999])\r
137      }\r
138 \r
139 type Duration = { \r
140          seconds : Long, \r
141          nanoSeconds : Integer(range=[0..999999999]) \r
142      }\r
143 \r
144 type LocalDate = { \r
145          year : Integer, \r
146          monthOfYear : Integer(range=[1..12]), \r
147          dayOfMonth : Integer(range=[1..31]) \r
148      }\r
149      \r
150 type LocalTime = { \r
151          hourOfDay : Integer(range=[0..23]),\r
152          minuteOfHour : Integer(range=[0..59]),\r
153          secondOfMinute : Integer(range=[0..59]),\r
154          nanoOfSecond : Integer(range=[0..999999999])\r
155      }\r
156      \r
157 type LocalDateTime = {\r
158          year : Integer, \r
159          monthOfYear : Integer(range=[1..12]), \r
160          dayOfMonth : Integer(range=[1..31]), \r
161          hourOfDay : Integer(range=[0..23]),\r
162          minuteOfHour : Integer(range=[0..59]),\r
163          secondOfMinute : Integer(range=[0..59]),\r
164          nanoOfSecond : Integer(range=[0..999999999])\r
165      }\r
166     \r
167 type ZonedDateTime = {\r
168          date : LocalDate,\r
169          time : LocalTime,\r
170          zone : TimeZone\r
171      }\r
172  \r
173 type TimeZone = { zoneId : String }\r
174 \r
175 // A result of a data capturing session\r
176 type RecordingSession = {\r
177          // An optional Datasource URL\r
178          datasource : Optional( String ),\r
179  \r
180          // Events that occured in the data source during sampling, a map of Event Id to Event\r
181          events: Map( Integer, Event ),\r
182  \r
183          // A collection of events that are promoted to milestones, a map of Milestone Id to Event Id\r
184          milestones : Map( Integer, Integer ),\r
185          \r
186          // All records, a map of NodeId to Recording(T, V)\r
187          recordings : Map( Variant, Variant )\r
188      }\r
189       \r
190 type SubscriptionParameters = {\r
191         nodeId : Variant,\r
192         deadband : Optional( Variant ),\r
193         interval : Optional( Variant )\r
194       }\r
195 \r
196 type SamplingConfiguration = {\r
197          // Capture events, if true events are captured\r
198          captureEvents : Boolean,\r
199          // Subscribed Variables\r
200          subscriptions : SubscriptionParameters[]\r
201       }\r
202       \r
203 type Event = {\r
204         // Session unique identifier\r
205         id : Integer,\r
206 \r
207         // Timevalue, a number type e.g. Double(unit="s"), or a date type (See #Time_Types)\r
208         time : Variant,\r
209 \r
210         // Title\r
211         title : Optional(String), \r
212 \r
213         // Message\r
214         message : String,\r
215  \r
216         // NodeId of the sender object, optional\r
217         source : Optional(Variant),\r
218 \r
219         // Event Type: alarm, action, error, info, debug\r
220         type : String,\r
221  \r
222         // System Text, generated by the source system, eg. \94YD11D001 started\94\r
223         systemText : Optional(String), \r
224 \r
225         // Comments\r
226         comments : Comment[],\r
227 \r
228         // Other Metadata\r
229         metadata : Map(String, String) \r
230       }\r
231 \r
232 type Comment = {\r
233         user : Optional(String),\r
234         message : String\r
235       }\r