]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - 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
diff --git a/bundles/org.simantics.scl.expressions/src/org/simantics/scl/expressions/datatype/DatatypeConversion.java b/bundles/org.simantics.scl.expressions/src/org/simantics/scl/expressions/datatype/DatatypeConversion.java
new file mode 100644 (file)
index 0000000..65edc41
--- /dev/null
@@ -0,0 +1,95 @@
+package org.simantics.scl.expressions.datatype;\r
+\r
+import org.simantics.databoard.type.ArrayType;\r
+import org.simantics.databoard.type.BooleanType;\r
+import org.simantics.databoard.type.ByteType;\r
+import org.simantics.databoard.type.Datatype;\r
+import org.simantics.databoard.type.DoubleType;\r
+import org.simantics.databoard.type.FloatType;\r
+import org.simantics.databoard.type.IntegerType;\r
+import org.simantics.databoard.type.LongType;\r
+import org.simantics.databoard.type.MapType;\r
+import org.simantics.databoard.type.OptionalType;\r
+import org.simantics.databoard.type.RecordType;\r
+import org.simantics.databoard.type.StringType;\r
+import org.simantics.databoard.type.UnionType;\r
+import org.simantics.databoard.type.VariantType;\r
+import org.simantics.scl.compiler.types.Type;\r
+import org.simantics.scl.compiler.types.Types;\r
+\r
+public class DatatypeConversion {\r
+\r
+    private static final Datatype.Visitor<Type> conversionVisitor = new Datatype.Visitor<Type>() {\r
+\r
+        @Override\r
+        public Type visit(ArrayType b) {\r
+            return Types.apply(Types.LIST, b.componentType.accept(this));\r
+        }\r
+\r
+        @Override\r
+        public Type visit(BooleanType b) {\r
+            return Types.BOOLEAN;\r
+        }\r
+\r
+        @Override\r
+        public Type visit(DoubleType b) {\r
+            return Types.DOUBLE;\r
+        }\r
+\r
+        @Override\r
+        public Type visit(FloatType b) {\r
+            return Types.FLOAT;\r
+        }\r
+\r
+        @Override\r
+        public Type visit(IntegerType b) {\r
+            return Types.INTEGER;\r
+        }\r
+\r
+        @Override\r
+        public Type visit(ByteType b) {\r
+            return Types.BYTE;\r
+        }\r
+\r
+        @Override\r
+        public Type visit(LongType b) {\r
+            return Types.LONG;\r
+        }\r
+\r
+        @Override\r
+        public Type visit(OptionalType b) {\r
+            return Types.apply(Types.MAYBE, b.componentType.accept(this));\r
+        }\r
+\r
+        @Override\r
+        public Type visit(RecordType b) {\r
+            throw new UnsupportedOperationException();\r
+        }\r
+\r
+        @Override\r
+        public Type visit(StringType b) {\r
+            return Types.STRING;\r
+        }\r
+\r
+        @Override\r
+        public Type visit(UnionType b) {\r
+            throw new UnsupportedOperationException();\r
+        }\r
+\r
+        @Override\r
+        public Type visit(VariantType b) {\r
+            throw new UnsupportedOperationException();\r
+        }\r
+\r
+        @Override\r
+        public Type visit(MapType b) {\r
+            throw new UnsupportedOperationException();\r
+        }\r
+\r
+    };\r
+\r
+    public static Type convertDatatypeToType(Datatype dataType) {\r
+        return dataType.accept(conversionVisitor);\r
+    }\r
+\r
+}\r