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