1 package org.simantics.scl.expressions.datatype;
\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
20 public class DatatypeConversion {
\r
22 private static final Datatype.Visitor<Type> conversionVisitor = new Datatype.Visitor<Type>() {
\r
25 public Type visit(ArrayType b) {
\r
26 return Types.apply(Types.LIST, b.componentType.accept(this));
\r
30 public Type visit(BooleanType b) {
\r
31 return Types.BOOLEAN;
\r
35 public Type visit(DoubleType b) {
\r
36 return Types.DOUBLE;
\r
40 public Type visit(FloatType b) {
\r
45 public Type visit(IntegerType b) {
\r
46 return Types.INTEGER;
\r
50 public Type visit(ByteType b) {
\r
55 public Type visit(LongType b) {
\r
60 public Type visit(OptionalType b) {
\r
61 return Types.apply(Types.MAYBE, b.componentType.accept(this));
\r
65 public Type visit(RecordType b) {
\r
66 throw new UnsupportedOperationException();
\r
70 public Type visit(StringType b) {
\r
71 return Types.STRING;
\r
75 public Type visit(UnionType b) {
\r
76 throw new UnsupportedOperationException();
\r
80 public Type visit(VariantType b) {
\r
81 throw new UnsupportedOperationException();
\r
85 public Type visit(MapType b) {
\r
86 throw new UnsupportedOperationException();
\r
91 public static Type convertDatatypeToType(Datatype dataType) {
\r
92 return dataType.accept(conversionVisitor);
\r