]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.databoard/src-isv/doc/datatype.mediawiki
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.databoard / src-isv / doc / datatype.mediawiki
1 =Datatype=\r
2 In Databoard all values have a type representation, [../javadoc/org/simantics/databoard/type/Datatype.html|Datatype]. \r
3 It is the base abstract class for all concrete type classes (See table below). \r
4 There is a facade class utility ([../javadoc/org/simantics/databoard/Datatypes.html|Datatypes]) that provides functions to most of the Datatype library's features.\r
5 \r
6 '''[../javadoc/org/simantics/databoard/type|org.simantics.databoard.type]'''.\r
7 {| style="background-color: #f9f9f9; border: 1px solid #aaaaaa; "\r
8 |- style="background-color: #e9e9e9; " |\r
9 | '''Class''' || '''Description'''\r
10 |- \r
11 | [../javadoc/org/simantics/databoard/type/Datatype.html|Datatype] || Base class for all data types\r
12 |- \r
13 | [../javadoc/org/simantics/databoard/type/RecordType.html|RecordType] || Record \r
14 |- \r
15 | [../javadoc/org/simantics/databoard/type/ArrayType.html|ArrayType] || Array - an ordered sequence of elements of one type.\r
16 |- \r
17 | [../javadoc/org/simantics/databoard/type/MapType.html|MapType] || Map - an ordered map of keys to values. \r
18 |- \r
19 | [../javadoc/org/simantics/databoard/type/UnionType.html|UnionType] || Union\r
20 |- \r
21 | [../javadoc/org/simantics/databoard/type/BooleanType.html|BooleanType],[../javadoc/org/simantics/databoard/type/IntType.html|IntType],[../javadoc/org/simantics/databoard/type/LongType.html|LongType],[../javadoc/org/simantics/databoard/type/FloatType.html|FloatType],[../javadoc/org/simantics/databoard/type/DoubleType.html|DoubleType]\r
22 | Primitive and numeric types\r
23 |- \r
24 | [../javadoc/org/simantics/databoard/type/StringType.html|StringType] || String \r
25 |- \r
26 | [../javadoc/org/simantics/databoard/type/OptionalType.html|OptionalType] || Optional value\r
27 |- \r
28 | [../javadoc/org/simantics/databoard/type/VariantType.html|VariantType] || Variant value\r
29 |}\r
30 \r
31 \r
32 Datatype can be acquired or created using one of the following methods:\r
33 * Construct new\r
34 * Constant \r
35 * [[binding#Reflection|Reflection]]-Read from a Class\r
36 * Read from string of [[Databoard_Specification|the text notation]].\r
37 <pre class="code">\r
38     Datatype type = new DoubleType();\r
39     Datatype type = Datatypes.DOUBLE;\r
40     Datatype type = Datatypes.getDatatype( Double.class );\r
41     \r
42     Datatypes.addDefinition("type Node = { id : String; children : Node[] }");\r
43     Datatype type = Datatypes.getDatatype("Node");\r
44 </pre>\r
45 \r
46 ==Parsing==\r
47 Datatypes are parsed using <code>Datatypes.DatatypeRepository</code>. \r
48 <pre class="code">\r
49     Datatypes.addDefinition("type Node = { id : String; children : Node[] }");\r
50     Datatype type = Datatypes.getDatatype("Node");\r
51 </pre>\r
52 \r
53 Types are printed to types and definitions with \r
54 <pre class="code">\r
55     String type = type.toString();\r
56     \r
57     DatatypeRepository repo = new DatatypeRepository();\r
58     repo.add("temp1", type);\r
59     String typeDef = repo.toString();\r
60 </pre>\r
61 \r
62 ==Structure Example==\r
63 A node is a recursive type. With databoard typesystem it could be stated as\r
64 <pre class="code">\r
65   type Node = {\r
66          id : String;\r
67          displayNames : LocalizedTexts;\r
68          children : Node[];\r
69          value : Optional(Variant);\r
70        }\r
71 </pre>\r
72 \r
73 [[Image:NodeType.png|Type presented as tree]]\r
74 \r
75 \r
76 A couple of instances with Databoard value notation:\r
77 <pre class="code">\r
78   root : Node = {\r
79            id = \93PI_01\94\r
80            displayNames = map{ \93en\94 = \93Instrument \93 }\r
81            children = \r
82             [ \r
83               {id=\94Child\94\r
84                displayNames = map{ \93en\94 = \93Child\94} },\r
85                value = 5 : Integer\r
86               }\r
87             ]\r
88            value = \93<root>\94 : String\r
89          }\r
90 </pre>\r
91 \r
92 [[Image:NodeInstance.png|Node values preseted as tree]]\r