]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.expressions/src/org/simantics/scl/expressions/datatype/DatatypeConversion.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.expressions / src / org / simantics / scl / expressions / datatype / DatatypeConversion.java
1 package org.simantics.scl.expressions.datatype;\r
2 \r
3 import org.simantics.databoard.type.ArrayType;\r
4 import org.simantics.databoard.type.BooleanType;\r
5 import org.simantics.databoard.type.ByteType;\r
6 import org.simantics.databoard.type.Datatype;\r
7 import org.simantics.databoard.type.DoubleType;\r
8 import org.simantics.databoard.type.FloatType;\r
9 import org.simantics.databoard.type.IntegerType;\r
10 import org.simantics.databoard.type.LongType;\r
11 import org.simantics.databoard.type.MapType;\r
12 import org.simantics.databoard.type.OptionalType;\r
13 import org.simantics.databoard.type.RecordType;\r
14 import org.simantics.databoard.type.StringType;\r
15 import org.simantics.databoard.type.UnionType;\r
16 import org.simantics.databoard.type.VariantType;\r
17 import org.simantics.scl.compiler.types.Type;\r
18 import org.simantics.scl.compiler.types.Types;\r
19 \r
20 public class DatatypeConversion {\r
21 \r
22     private static final Datatype.Visitor<Type> conversionVisitor = new Datatype.Visitor<Type>() {\r
23 \r
24         @Override\r
25         public Type visit(ArrayType b) {\r
26             return Types.apply(Types.LIST, b.componentType.accept(this));\r
27         }\r
28 \r
29         @Override\r
30         public Type visit(BooleanType b) {\r
31             return Types.BOOLEAN;\r
32         }\r
33 \r
34         @Override\r
35         public Type visit(DoubleType b) {\r
36             return Types.DOUBLE;\r
37         }\r
38 \r
39         @Override\r
40         public Type visit(FloatType b) {\r
41             return Types.FLOAT;\r
42         }\r
43 \r
44         @Override\r
45         public Type visit(IntegerType b) {\r
46             return Types.INTEGER;\r
47         }\r
48 \r
49         @Override\r
50         public Type visit(ByteType b) {\r
51             return Types.BYTE;\r
52         }\r
53 \r
54         @Override\r
55         public Type visit(LongType b) {\r
56             return Types.LONG;\r
57         }\r
58 \r
59         @Override\r
60         public Type visit(OptionalType b) {\r
61             return Types.apply(Types.MAYBE, b.componentType.accept(this));\r
62         }\r
63 \r
64         @Override\r
65         public Type visit(RecordType b) {\r
66             throw new UnsupportedOperationException();\r
67         }\r
68 \r
69         @Override\r
70         public Type visit(StringType b) {\r
71             return Types.STRING;\r
72         }\r
73 \r
74         @Override\r
75         public Type visit(UnionType b) {\r
76             throw new UnsupportedOperationException();\r
77         }\r
78 \r
79         @Override\r
80         public Type visit(VariantType b) {\r
81             throw new UnsupportedOperationException();\r
82         }\r
83 \r
84         @Override\r
85         public Type visit(MapType b) {\r
86             throw new UnsupportedOperationException();\r
87         }\r
88 \r
89     };\r
90 \r
91     public static Type convertDatatypeToType(Datatype dataType) {\r
92         return dataType.accept(conversionVisitor);\r
93     }\r
94 \r
95 }\r