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